void viewer_BrowseFired(BinaryViewer binaryViewer, DbObject rowDbObject, string bindingPath, StoredClassDataView view)
        {
            BrowseResult browse = browseFileService.Browse(null);
            if (browse.Cancel) return;

            byte[] bytes = File.ReadAllBytes(browse.FilePath);

            binaryViewer.DataSource = bytes;
            binaryViewer.Path = browse.FilePath;

            DataGridUtils.SetValueByPath(rowDbObject,bindingPath,bytes);
            AddEditedObject(view,rowDbObject);
        }
        bool view_ShowBinaryViewerFired(object arg1, string arg2, object arg3, StoredClassDataView view)
        {
            byte[] data = arg3 as byte[];

            var viewer = new BinaryViewer();
            viewer.DataSource = data;
            viewer.BrowseFired += new Action<BinaryViewer,DbObject,string, StoredClassDataView>(viewer_BrowseFired).Apply(viewer,(DbObject)arg1,arg2, view);

            windowManager.ShowDialog(viewer, "Binary viewer");

            return true;
        }
        private void ShowBinaryViewer(object sender, RoutedEventArgs e)
        {
            var window = new Window();
            Button button = (Button) sender;
            object rowObject = button.DataContext;
            object value = DataGridUtils.GetValueByPath(bindingPath,rowObject);

            if (ShowBinaryViewerFired.Fire(rowObject, bindingPath, value))
                return;

            var viewer = new BinaryViewer(){DataSource = value as byte[]};

            window.Content = viewer;

            window.ShowDialog();
        }