3
  1. MainWindowViewModel有一个ViewCustomerCommand(string id)命令,按 id 显示客户
  2. MainWindow.xaml包含 TabControl
  3. TabControl 有一个 UserControl,其中包含绑定到客户集合的 DataGrid
    | 编号 | 客户 |

如何将 DataGrid 选定行中的“id”列作为MainWindow.xaml中的命令参数传递

MainWindow.xaml
    <Button Command="{Binding ViewCustomerCommand}" CommandParameter="??? how to pass id of selected customer ???" />
4

1 回答 1

4

好吧,如果您真的需要SelectedItem在 a 中公开 from,UserControl为什么不用这样的属性来扩展它呢?

例如

public class MyUserControl : UserControl
{
    private static readonly SomeType SelectedItemProperty = 
        DependencyProperty.Register("SelectedItem", typeof(SomeType), typeof(MyUserControl));

    public SomeType SelectedItem
    {
        get { return (SomeType)GetValue(SelectedItemProperty); }
        set { SetValue(SelectedItemProperty, value); }
    }
}

所以现在你可以将 in 的 绑定SelectedItemDataGridUserControlSelectedItem属性上。

<MyUserControl>
    <DataGrid SelectedItem="{Binding SelectedItem, 
              RelativeSource={RelativeSource FindAncestor, 
              AncestorType={x:Type MyUserControl}}" />
</MyUserControl>

现在你只需要找到一种方法来访问SelectedItem. TabItem但我把那部分留给你。

请注意,这只是我的想法的一个说明,它可能包含一些小错误。

于 2013-05-15T12:06:10.897 回答