我在我的MainWindowView.xaml中。它包括一个用户控件。
我正在尝试使用参数设置命令。此参数是gridControl(devexpress项目)的选定行。
我尝试了两个绑定,两个都错了(他们找不到参数):
<Button Command="{Binding DeleteCommand}" CommandParameter="{Binding Path=lst1, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type uc:ucImpianti}}}" Style="{DynamicResource BtnToolBar}"/>
和
<Button Command="{Binding DeleteCommand}" CommandParameter="{Binding ElementName=lst1, Path=FocusedRow}" Style="{DynamicResource BtnToolBar}"/>
我如何编写绑定以在UC中传递gridControl的选定行?
我的命令定义是:
public ICommand DeleteCommand { get; private set; }
private void DeleteRecord(object parameter)
{
Debug.WriteLine(parameter);
}
[...]
DeleteCommand = new DelegateCommand<object>(DeleteRecord, CanAlways);
答案 0 :(得分:1)
WPF中习惯于将某个类型的集合数据绑定到ItemsSource
属性,并将集合中对象类型的属性绑定到SelectedItem
属性(它没有区别此示例使用ListBox
):
<ListBox ItemsSource="{Binding YourCollection}"
SelectedItem="{Binding YourSelectedItem}" ... />
通过此设置,您可以直接将数据绑定到YourSelectedItem
属性中的CommandParameter
属性:
<Button Command="{Binding DeleteCommand}" CommandParameter="{Binding YourSelectedItem}"
Style="{DynamicResource BtnToolBar}" />
答案 1 :(得分:0)
更一般的答案是:
如果您想从usercontrol访问对象/属性,那么UserControl应该使用依赖属性公开对象/属性,并且您可以绑定到此DP。
另一种方法是检查Usercontrol的DataContext是否公开该属性,然后绑定到usercontrol的Datacontext.Property。
因此,对于您的情况,我需要一些Viewmodel和View绑定的更多信息