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}">

ただし、両方のサブコントロールで同じCounterpartiesDataオブジェクトを共有するために、CollectionViewSourceを親ウィンドウに移動したので、グリッドにバインドする方法が見つかりません。そのためのヒントを教えてください。

最後になりましたが、ユーザーコントロールCounterparties_UserInputsのテキストボックスフィールドに、現在選択されているカウンターパティ名を表示したいと思います。どうすれば簡単にアクセスできるか知っていますか?

ありがとうございました!

4

1 に答える 1

0

あなたはただあなたcounterpartiesDataViewにとしてを渡すことができるはずですDataContextUserControl

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

そして、UserControlのItemSourceを設定します

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

ただし、idfをUserControlすでに使用している場合は、親を検索してそのプロパティの1つにバインドするためにDataContext使用できます。FindAncestor

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