2015-08-04 1 views
2

Я пытаюсь получить простой DataTempleSelector для моего списка WPF Listbox, и мне не повезло. У меня есть точка прерывания, установленная на SelectTemplate, и ее просто не вызывают. Любая идея, что я делаю неправильно здесь?DataTempleSelector Not Calling SelectTemplate

C#:

public class ListBoxTemplateSelector : DataTemplateSelector 
{ 
    public DataTemplate DefaultnDataTemplate { get; set; } 
    public DataTemplate OverrideDataTemplate { get; set; } 

    public override DataTemplate SelectTemplate(object item, DependencyObject container) 
    { 
     string listboxItem = item as string; 
     if (listboxItem == "Apples" || listboxItem == "Oranges") 
     { 
      return OverrideDataTemplate; 
     } 

     return DefaultnDataTemplate; 
    } 
} 

XAML:

<Window.Resources> 
    <DataTemplate x:Key="DefaultDataTemplate"> 
     <Grid Margin="4" MinHeight="25" Background="Blue"/> 
    </DataTemplate> 

    <DataTemplate x:Key="OverrideDataTemplate"> 
     <Grid Margin="4" MinHeight="25" Background="Black"/> 
    </DataTemplate> 

    <converters:ListBoxTemplateSelector 
     x:Key="templateSelector" 
     DefaultnDataTemplate="{StaticResource DefaultDataTemplate}" 
     OverrideDataTemplate="{StaticResource OverrideDataTemplate}"/> 

</Window.Resources> 

<Grid> 
    <ListBox ItemTemplateSelector="{StaticResource templateSelector}"> 
     <ListBox.Items> 
      <ListBoxItem Content="Apple"/> 
      <ListBoxItem Content="Banannas"/> 
      <ListBoxItem Content="Oranges"/> 
      <ListBoxItem Content="Lemons"/> 
     </ListBox.Items> 
    </ListBox> 
</Grid> 

ответ

1

Вы жестко закодированы пользовательский интерфейс из элементов в элементе управления ListBox в ListBoxItems

Если вы хотите использовать из ItemTemplate вам нужно будет использовать свойство ItemsSourceListBox, тогда ваш DataTemplate будет применяться для каждого элемента.

т.е.

<ListBox ItemTemplateSelector="{StaticResource templateSelector}" ItemsSource="{Binding Fruits}"> 
</ListBox> 

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

  • Нет связанных вопросов^_^