2013-05-15 4 views
3
  1. MainWindowViewModel имеет ViewCustomerCommand (строка ID) команды, которая показывает клиент по ID
  2. MainWindow.xaml содержащего TabControl
  3. TabControl имеет UserControl, что содержит DataGrid, который привязан к коллекции клиентов
    | id | клиент |

Как передать столбец «Идентификатор» в DataGrid выбранной строке в качестве параметра команды в MainWindow.xamlWPF DataGrid передать выбранную строку в качестве параметра

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

ответ

4

Ну, если вам действительно нужно подвергать SelectedItem изнутри UserControl почему дон вы не распространяете его с таким свойством?

E.g.

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); } 
    } 
} 

Итак, теперь вы можете связать SelectedItem из DataGrid в UserControl его свойству SelectedItem.

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

Теперь у вас есть только найти способ, чтобы получить доступ к SelectedItem собственности в TabItem. Но я оставляю вам эту часть.

Обратите внимание, что это только иллюстрация моей идеи и может содержать некоторые небольшие ошибки.

+0

Большое спасибо, @DHN. Ваш ответ помог так много раствором Я сделал, как вы сказали, и создали свойство SelectedCustomer и привязать его к DataGrid ' ' И командный параметр передается как следующие ** MainWindow.xaml ** '

+0

Пожалуйста. Рад, что смог помочь. – DHN

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