リストボックスで使用される DataTemplate があります。
<local:BooleanToFontColorConverter x:Key="boolToFontColor" />
<DataTemplate x:Key="ListBox_DataTemplateSpeakStatus">
<Label Width="Auto">
<TextBlock Name="MY_TextBlock" Text="Hello!" Foreground="{Binding Path=MY_COLOR, Converter={StaticResource boolToFontColor}}" />
</Label>
</DataTemplate>
MY_COLOR は次のコードです。
public class Packet_Class : INotifyPropertyChanged
{
private bool _my_color = false;
public bool MY_COLOR { get { return _my_color; }
set { _my_color = value; RaisePropertyChanged("MY_COLOR"); } }
}
次に、必要に応じてプロパティを設定します。これにより、RaisePropertyChanged 関数が起動されると思います。
myPacketClass.MY_COLOR = true;
boolToFontColor がこのビットを使用しようとしている間:
public class BooleanToFontColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
if (value is Boolean)
{
return ((bool)value) ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.Black);
}
return new SolidColorBrush(Colors.Black);
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
MY_COLOR の値を true から false に、またはその逆に変更しても、実行時にテキストの前景色に目に見える変化は見られません。私が間違っている場所についてアドバイスをくれる人はいますか?よろしくお願いいたします。
編集:
より明確にするための追加情報。次のように ListBox で DataTemplate を使用しています。
<ListBox x:Name="MyUserList" ItemTemplate="{StaticResource ListBox_DataTemplateSpeakStatus}" SelectionMode="Extended" />
そして、WPF Window 要素で、ローカルの名前空間を mainwindow.xaml.cs がカプセル化されている名前空間に設定します。
xmlns:local ="clr-namespace:My_NameSpace"