1

ページにItemsControl表示されるアイテムのコレクションを含む があります。にItemsControlは、ItemTemplate特定の DataTemplate リソースに設定されるプロパティがあります。

<DataTemplate x:Key="SimpleTemplate">
        <!-- .... -->
</DataTemplate>

<DataTemplate x:Key="ComplexTemplate">
        <!-- .... -->
</DataTemplate>
...............................
<ItemsControl 
      x:Name="MainCanvas"
      DataContext="{StaticResource mainItems}"
      ItemsSource="{Binding Path=Buttons}"
      ItemTemplate="{StaticResource SimpleTemplate}"
>

      <ItemsControl.ItemsPanel>
           <ItemsPanelTemplate>
                 <Canvas Width="4000" Height="4000" />
           </ItemsPanelTemplate>                       
      </ItemsControl.ItemsPanel>

</ItemsControl> 

プログラムで ItemsControl 内の特定の項目の DataTemplate を変更することは可能ですか?

4

1 に答える 1

3

ItemTemplateSelectorを探しているように聞こえます

TemplateSelector を作成し、特定の項目に基づいて適用するテンプレートを決定できます。

public class MyTemplateSelector : DataTemplateSelector
{
    public DataTemplate SimpleTemplate { get; set; }

    public DataTemplate ComplexTemplate { get; set; }

    public override System.Windows.DataTemplate SelectTemplate(object item, System.Windows.DependencyObject container)
    {
        // Logic to decide which template to apply goes here

        return // Either SimpleTemplate or ComplexTemplate
    }
}

xaml で、テンプレート セレクターをリソースとして追加します。

<local:MyTemplateSelector x:Key="itemTemplateSelector">
            <local:MyTemplateSelector.SimpleTemplate>
                <DataTemplate>

                    <!-- Implementation goes here -->

                </DataTemplate>
            </local:MyTemplateSelector.SimpleTemplate>
            <local:MyTemplateSelector.ComplexTemplate>
                <DataTemplate>

                    <!-- Implementation goes here -->

                </DataTemplate>
            </local:MyTemplateSelector.ComplexTemplate>
</local:MyTemplateSelector>

そして、あなたの中でそれを使用してくださいItemsControl

<ItemsControl 
  x:Name="MainCanvas"
  DataContext="{StaticResource mainItems}"
  ItemsSource="{Binding Path=Buttons}"
  ItemTemplateSelector="{StaticResource itemTemplateSelector}">

お役に立てれば

于 2013-09-25T07:06:23.000 に答える