2013-08-05 3 views
0

Ok У меня есть в appilication WPF, в которым у меня есть Resource Dictionary где я создать два различных стиля для ListBox Item.Template (Style1, Style2). И я установил мой стартовый стиль, как это:WPF Установка ListBox ItemTemplate из кода

<ListBox x:Name="Lister" ItemTemplate="{DynamicResource Style1}"/> 

Теперь я хочу, чтобы позволить пользователю изменить стиль ListBoxItem всякий раз, когда он хочет. Но я не знаю, как это будет сделано. Спасибо заранее.

ответ

3
<ListBox ItemsSource="{Binding YourList}" 
     ItemTemplate="{DynamicResource Template1}"> 
    <ListBox.Style> 
     <Style TargetType="ListBox"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding SomeConditionInTheViewModel}" Value="True"> 
        Setter Property="ItemTemplate" Value="{DynamicResource Template2}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.Style> 
</ListBox 
+0

Bravo - впечатляющая скорость, при которой вы запускали спусковой крючок. – Gjeltema

+0

Явные настройки имеют приоритет над триггерами, поэтому значение ItemTemplate по умолчанию должно быть определено в установщике стиля. – nmclean

+0

Мне удалось заставить его работать, но по-другому. Мне было очень сложно сделать привязку. Я просто не мог заставить его работать. Поэтому я сделал это в коде C# следующим образом: Lister.ItemTemplate = (DataTemplate) FindResource («Style2»); – oimitro

Смежные вопросы