我有一个边框,我想根据 bool 变量更改它的颜色。我用了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}}}" />
我使用了相同的代码,但没有找到。
最佳答案
总结一下评论,因为上面的代码似乎没有任何问题,这表明
的绑定(bind)上下文存在问题Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter}}"
您不能从另一个 Window
引用一个 Window
。如果你有 2 个独立的 Window
,每个都有 Border
应该触发相同的属性更改,那么你将两个窗口的 DataContext
设置为相同的实例查看模型。
关于wpf - 根据 bool 值更改边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26713533/