У меня есть композитный вид, что состоит элементом управления родительского пользователя (Counterparties_MainWindow) с к Embeded пользовательских элементов управления (Counterparties_UserInputs и Counterparties_SystemDetails):Привязка к CollectionViewSource родительского контроля
<UserControl x:Class="Counterparties_MainWindow">
<av:UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Counterparties_Dictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
<CollectionViewSource x:Key="counterpartiesDataView" Source="{Binding Path=CounterpartiesData}" />
</ResourceDictionary>
</av:UserControl.Resources>
<DockPanel>
<DockPanel>
<GUI:Counterparties_UserInputs x:Name="UserInputs"/>
<GUI:Counterparties_SystemDetails x:Name="SystDetails"/>
</DockPanel>
</DockPanel>
В «Counterparties_SystemDetails» содержит сетку, которая отображает некоторые уже определенные поля из CounterpartiesData (список объектов). «Counterparties_UserInputs» отображает список еще не определенных полей из данных CounterpartiesData, которые должны быть определены пользователем.
Я использовал, чтобы иметь CollectionViewSource в Counterparties_SystemDetails управления пользователя XAML и привязки непосредственно сетки к ней, она работает (то есть отображение мне детали CounterpartiesData):
<DataGrid Name="CounterpartiesGrid" ItemsSource="{Binding Source={StaticResource counterpartiesDataView}}"
SelectedItem="{Binding Path=SelectedCounterparty, Mode=OneWayToSource}" Style="{StaticResource DataGridStyle}">
Однако теперь, когда я ve переместил CollectionViewSource в родительское окно, чтобы совместно использовать один и тот же объект CounterpartiesData в обоих субконтроллерах, я не могу найти способ привязать его к моей сетке. Не могли бы вы получить несколько советов о том, как это сделать?
Последнее, но не менее важное: я хотел бы отобразить текущее выбранное имя встречного вызова в поле текстового поля пользовательского элемента управления Counterparties_UserInputs. Знаете ли вы, как я могу легко получить к нему доступ?
Спасибо!
Спасибо, это работает отлично! Однако я забыл спросить то, что я добавил в конце вопроса. Мне также нужно будет отобразить текущее выбранное имя контрагента в сетке в текстовое поле, которое находится в Counterparties_UserInputs на этот раз. Я пытался связать его, но не нашел правильного синтаксиса: ' ' –
goul
вы должны уметь связывать DataGrid, что-то например «Text =» {Binding ElementName = dataGridName, Path = SelectedItem.cptyName} "' –
Извините, не удалось правильно объяснить. Datagrid находится в «Counterparties_SystemDetails», текстовом поле в «Counterparties_UserInputs», оба указывающие на тот же самый «DataContext», поэтому не уверены, как получить доступ к datagrid из другого элемента 'UserControl'. Вот мой журнал ошибок, надеюсь, что это поможет: 'BindingExpression не может получить значение из-за недостающей информации. BindingExpression: Path = SelectedCounterparty; DataItem = 'ListCollectionView'; целевой элемент - «DataGrid» (Name = 'CounterpartiesGrid'); target свойство «SelectedItem» (тип «Object») ' – goul