2014-01-30 2 views
0

Я использую элемент управления сеткой, полученный из сетки Telerik, чтобы добавить CurrentSelection DependencyProperty, чтобы я мог использовать его в режиме Mvvm.DependencyProperty СвойствоChangedCallback не запускается, когда значение null установлено

public static readonly DependencyProperty CurrentSelectionProperty = DependencyProperty.Register(
     "CurrentSelection", 
     typeof(ObservableCollection<object>), 
     typeof(TelerikGrid), 
     new PropertyMetadata(new ObservableCollection<object>(), **DependencyPropertyDebugger**)); 

Это, кажется, довольно хорошо работать каждые другие места, которые я использовал его ...

Теперь мы добавили ContextMenu в нашей сетке, щелкните правой кнопкой мыши и выбора печати, довольно просто ... Он по-прежнему кажется, работать нормально.

<MenuItem Command="{Binding CommandPrintReport}"> 
       </MenuItem> 

Это MenuItem теперь шаблонный добавить кнопку «Параметры», используемую для открытия диалогового окна.

<MenuItem.HeaderTemplate> 
         <DataTemplate> 
          <DockPanel> 
           <TextBlock DockPanel.Dock="Left" Text="Print selection" Margin="0,0,15,0"/> 

            <Button Style="{StaticResource MenuItemButton}" DockPanel.Dock="Right" Command="{x:Static NS:ViewModel.CommandReportOptions}"> 
            <Image Source="{Binding Source={x:Static ImagePath:General.ConfigLite}}" /> 
           </Button> 
          </DockPanel> 
         </DataTemplate> 
        </MenuItem.HeaderTemplate> 

При нажатии на эту кнопку, вместо того, чтобы напечатать выбор, свойство зависимостей, кажется, устанавливается в нуль, так что мы теряем выбор. При взгляде на Имущество измененной функции обратного вызова, с DependencyPropertyDebugger, я могу видеть, значение устанавливается в какой-то отбор, но это не срабатывает, когда он установлен обратно в нуль ...

private static void DependencyPropertyDebugger(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     Console.WriteLine("{0}.{1}: {2}", d.DependencyObjectType.Name, e.Property.Name, e.NewValue); 
    } 

Моих команд

public ICommand CommandPrintReport { get; private set; } 
    public static ICommand CommandReportOptions { get; set; } 

я оценил бы некоторую помощь Спасибо

+0

Как устанавливается CurrentSelection? –

+0

Использование привязки для свойства зависимостей: CurrentSelection = "{Binding CurrentSelection, UpdateSourceTrigger = PropertyChanged, Mode = TwoWay}" – JCorriveau

ответ

0

Вместо того чтобы использовать статическую команду,

Command="{x:Static NS:ViewModel.CommandReportOptions}" 

я нашел способ не использовать его статику таким образом

Command="{Binding DataContext.CommandReportOptions, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MyPage}} 

И тогда это фиксированный мою проблему, мой текущий выбор сохраняет свое значение.

Смежные вопросы