скажем, у нас есть простой класс данных:
public class Ex {
public string Prop1 {...} // notify property
public string Prop2 {...} // notify property
}
и ObservableCollection объектов этого класса. Я хочу, чтобы эта коллекция отображалась в ListView с отдельным DataTemplated, который отличается Ex.Prop2 (если он нулевой или пустой, тогда используется template01, иначе template02). Это свойство можно изменить во время выполнения, поэтому простой «трюк» с ListView.ItemTemplateSelector не работает :(
Как добиться этой функциональности? Можно ли добиться этого каким-либо другим способом, кроме прослушивания NotifyPropertyChanged для каждого объекта коллекции и ручного изменения шаблона?
Спасибо за вашу помощь.
Ниже фрагмент кода, который у меня уже есть:
<ListView x:Name="lstTerms"
ItemsSource="{Binding Game.Words}"
HorizontalContentAlignment="Stretch"
Grid.IsSharedSizeScope="True">
<ListView.ItemContainerStyle>
<Style>
<Setter Property="Control.Padding" Value="0" />
</Style>
</ListView.ItemContainerStyle>
<!-- checks if element is null or its Prop2 is null or empty. If so, uses NullTemplate -->
<ListView.ItemTemplateSelector>
<local:MySelectTemplate
NormalTemplate="{StaticResource NormalItemTemplate}"
NullTemplate="{StaticResource NullItemTemplate}" />
</ListView.ItemTemplateSelector>
</ListView>