2012-05-18 4 views
8

コントロールの依存関係プロパティに基づいて、リストボックスのItemsPanelTemplateプロパティを設定する必要があります。それを行うためにDataTemplateSelectorを使用するにはどうすればよいですか?ItemsPanelTemplate wpfのセレクタ?

私のようなものがあります:

<ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
     <!-- Here I need to replace with either a StackPanel or a wrap panel--> 
    </ItemsPanelTemplate> 
</ListBox.ItemsPanel> 

感謝を

答えて

15

ありItemsPanelSelectorではありません(おそらくそれはDataTemplateではないので)しかし、あなたはそれを結合するか、またはStyle例でTrigger

Binding

<ListBox ItemsPanel="{Binding RelativeSource={RelativeSource Self}, 
           Path=Background, 
           Converter={StaticResource MyItemsPanelConverter}}"> 

Triggerを使用することができます

<ListBox ItemsSource="{Binding Source={x:Static Fonts.SystemFontFamilies}}"> 
    <ListBox.Style> 
     <Style TargetType="ListBox"> 
      <Setter Property="ItemsPanel"> 
       <Setter.Value> 
        <ItemsPanelTemplate> 
         <StackPanel/> 
        </ItemsPanelTemplate> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <!-- Your Trigger.. --> 
       <Trigger Property="Background" Value="Green"> 
        <Setter Property="ItemsPanel"> 
         <Setter.Value> 
          <ItemsPanelTemplate> 
           <WrapPanel/> 
          </ItemsPanelTemplate> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.Style> 
</ListBox> 
+0

Great ..コードサンプルを提供してくれてありがとう。本当に私を助けてくれました。私の友人を尊敬します。 – user1202434

0

私はここに最適なルートを考えていたDependencyPropertyあなたに基づいてItemsPanelを変更するトリガをあなたのListBoxのスタイルを使用することと設定します参照。

関連する問題