0

我有一个由父用户控件(Counterparties_MainWindow)组成的复合视图,其中嵌入了用户控件(Counterparties_UserInputs 和 Counterparties_SystemDetails):

<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 中尚未定义的字段列表。

我曾经在 Counterparties_SystemDetails 用户控件 xaml 中有 CollectionViewSource 并直接将网格绑定到它,它正在工作(即向我显示 CounterpartiesData 详细信息):

<DataGrid Name="CounterpartiesGrid" ItemsSource="{Binding Source={StaticResource counterpartiesDataView}}"
SelectedItem="{Binding Path=SelectedCounterparty, Mode=OneWayToSource}"  Style="{StaticResource DataGridStyle}">

但是,现在我已经将 CollectionViewSource 移动到父窗口以便在两个子控件中共享相同的 CounterpartiesData 对象,我找不到任何方法将其绑定回我的网格。您能否提供一些有关如何操作的提示?

最后但同样重要的是,我想在用户控件 Counterparties_UserInputs 的文本框字段中显示当前选定的对方名称。你知道我怎样才能轻松访问它吗?

谢谢!

4

1 回答 1

0

您应该能够将counterpartiesDataViewas传递DataContext给您的UserControl

<DockPanel>
   <DockPanel>
       <GUI:Counterparties_UserInputs x:Name="UserInputs" DataContext="{Binding Source={StaticResource counterpartiesDataView}}" />

并设置您的 UserControl 的 ItemSource

<DataGrid Name="CounterpartiesGrid" ItemsSource="{Binding}" />

UserControl但是,您已经将idfDataContext用于其他可以FindAncestor用来查找 Parent 并绑定到其属性之一的东西。

<DataGrid Name="CounterpartiesGrid" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type UserControl}},Path=CounterpartiesData}">
于 2013-03-05T03:31:50.587 回答