1

コントロールで定義されたデータ テンプレートで、リソースとして定義された既存のデータ テンプレートを再利用する必要があります。

...これはリソースとしての顧客データ テンプレートなので、再利用可能なオブジェクトにすることができます

顧客データ テンプレート:

<ResourceDictionary ... >

    <DataTemplate DataType="{x:Type Model:Customer}">

        <StackPanel Orientation="Vertical" Width="Auto">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition Width="140" />
                    </Grid.ColumnDefinitions>                   

                    <Grid.RowDefinitions>
                        <RowDefinition Height="20"/>
                        <RowDefinition Height="25"/>
                    </Grid.RowDefinitions>

                    <TextBox Text="{Binding CustomerName}"
                        Grid.Column="0" Grid.Row="0" />
        </StackPanel>

    </DataTemplate>

</ResourceDictionary>

ここで、上記で定義した Customer データ テンプレートをユーザー コントロール データ テンプレートで再利用する必要があります。

<UserControl x:Class="MyCustomerControl"

    <UserControl.Resources >

        <DataTemplate DataType="{x:Type frnri:CustomerViewModel}">

            question: How can I reuse customer data template here?

        </DataTemplate>


    </UserControl.Resources>

</UserControl>

MyCustomerControl で顧客データ テンプレートをインラインで定義せずに、このシナリオは可能ですか?

4

1 に答える 1

0

データテンプレートをApp.xamlに配置すると、プログラム全体で利用できるようになります。

次のようにリソースを宣言します

<Application.Resources>
<DataTemplate DataType="{x:Type Model:Customer}" x:Key="customerTemplate">

    <StackPanel Orientation="Vertical" Width="Auto">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition Width="140" />
                </Grid.ColumnDefinitions>                   

                <Grid.RowDefinitions>
                    <RowDefinition Height="20"/>
                    <RowDefinition Height="25"/>
                </Grid.RowDefinitions>

                <TextBox Text="{Binding CustomerName}"
                    Grid.Column="0" Grid.Row="0" />
    </StackPanel>

</DataTemplate>
</Application.Resources>

次に、次のようにUserControlで参照できます。

<ListBox ItemTemplate="{StaticResource customerTemplate}" />

同じことがResouceDictionaryでも機能します

于 2012-07-01T16:51:45.663 に答える