2

タブコントロールの各タブのコンテンツとして単一のDataGridを使用しようとしています(次に、グリッドのコンテンツをリロードして、さまざまなタブをクリックしたときにさまざまなステータスのモデルを表示します)。

ただし、何らかの理由で、DataGridがTabControlのDataTemplate内にある場合、バインドに失敗します。ただし、同じDatagrid XAMLとバインディングは、ページのメインフローで完全に機能します。

<!-- first grid works perfectly-->
<DataGrid ItemsSource="{Binding RANsToDisplay}" />

<TabControl>                
    <TabControl.ContentTemplate>
        <DataTemplate>
            <!-- Second grid fails to bind-->
            <DataGrid ItemsSource="{Binding RANsToDisplay}" />
        </DataTemplate>
    </TabControl.ContentTemplate>

    <TabItem Header="Calls"></TabItem>
    <TabItem Header="Collections"></TabItem>
    <TabItem Header="Receipts"></TabItem>
</TabControl>

タブコントロールのDataTemplate内のアイテムのDataContextが、それ以外のアイテムとは異なるためだと思いますが、長い休憩の後、WPFを元に戻すだけで、DataTemplateでDataGridを取得する方法がわかりません。 DataContextに適切にバインドします。

ヘルプ/ポインタを事前に感謝します。

4

1 に答える 1

4

DataGridバインディングには相対パスを使用する必要があります。

<!-- first grid works perfectly-->
<DataGrid ItemsSource="{Binding RANsToDisplay}" />

<TabControl>                
    <TabControl.ContentTemplate>
        <DataTemplate>
            <!-- Second grid fails to bind-->
            <DataGrid ItemsSource="{Binding DataContext.RANsToDisplay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
        </DataTemplate>
    </TabControl.ContentTemplate>

    <TabItem Header="Calls"></TabItem>
    <TabItem Header="Collections"></TabItem>
    <TabItem Header="Receipts"></TabItem>
</TabControl>

UserControlを、DataContextを格納するコントロールに変更するだけです。

于 2013-02-19T18:36:40.280 に答える