我正在使用从Telerik Grid派生的网格控件来添加DependencyProperty CurrentSelection,以便我可以以Mvvm方式使用它。
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>
当单击此按钮而不是打印选择时,依赖项属性似乎设置为null,因此我们将丢失选择。当查看属性更改回调时,使用DependencyPropertyDebugger,我可以看到该值被设置为某些选择,但是当它设置回null时它不会被触发...
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 :(得分:0)
而不是使用静态命令,
Command="{x:Static NS:ViewModel.CommandReportOptions}"
我找到了一种不以静态方式使用它的方法
Command="{Binding DataContext.CommandReportOptions, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MyPage}}
然后它解决了我的问题,我当前的选择保持其价值。