のは、我々は、単純なデータクラスを持っているとしましょう:変更ListView.ItemTemplateサブ要素の変化に
public class Ex {
public string Prop1 {...} // notify property
public string Prop2 {...} // notify property
}
と、このクラスのオブジェクトののObservableCollection。私は、このコレクションを別々のDataTemplatedでListViewに表示したいのですが、これはEx.Prop2で区別されます(nullまたは空の場合は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>
を望んでいたが、レイチェルのも良いです場合
String.IsNullOrEmpty(value)
を返しConverter
使用することができ、変更取得値に対応しています。なぜ私は自分でそれらのことを考えなかったのかわかりません...多くの仕事であなたを殺します; D – SOReader