我有一个边框,我想根据布尔变量改变颜色。我使用link here来实现Boolean
到Color
转换器。
代码如下所示:
xaml:
<Border Width="45"
Height="45" CornerRadius="5"
Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter}}" />
后台的LivenessActive变量:
public bool LivenessActive
{
get { return _livenessActive; }
set
{
_livenessActive = value;
OnPropertyChanged("LivenessActive");
}
}
该类具有INotifyPropertyChanged
的继承并已实施OnPropertyChanged
事件。
BrushColorConverter.cs:
public class BrushColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value)
{
{
return new SolidColorBrush(Colors.GreenYellow);
}
}
return new SolidColorBrush(Colors.DarkGray);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
但我甚至无法触发BrushColorConverter
。我做错了什么?
第二:如果我想从另一个窗口使用它呢?
<Border Width="45" Height="45" CornerRadius="5"
Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter},
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type view:MyWindowName}}}" />
我使用了相同的代码并且没有找到它。
答案 0 :(得分:3)
总结评论,因为上面的代码似乎没有任何问题,这表明绑定上下文存在问题
Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter}}"
您无法从另一个Window
引用一个Window
。如果您有2个独立的Window
,每个Border
都应该触发相同的属性更改,那么您将两个窗口的DataContext
设置为相同的视图模型实例。