我有一个列表框使用的 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"