WPF命令:来自用户控件的参数

时间:2014-09-25 08:41:47

标签: c# wpf mvvm commandbinding commandparameter

我在我的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);

2 个答案:

答案 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绑定的更多信息