скажем, у нас есть простой класс данных:
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>