根据布尔值更改边框颜色
问题描述:
我有一个边框,我想根据布尔变量改变它的颜色。我用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
并已实施了ev ENT。
的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}}}" />
我使用相同的代码,它不是找到它。
答
综上所述意见,因为似乎有什么不对以上代码会提示没有与结合上下文
Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter}}"
您不能从另一个Window
引用一个Window
问题。如果您有两个独立的Window
s,每个Border
应触发相同的属性更改,那么您将两个窗口的DataContext
设置为同一个视图模型实例。
+0
非常感谢!这正是我需要的! – Sonhja 2014-11-03 14:31:29
我在这段代码中看不出任何错误。 LivenessActive在哪里定义? DataContext是否相应地设置? – dkozl 2014-11-03 11:47:56
True ... DataContext !!我怎么能把它忘了......请发表你的回答,这样我就可以让它升级... – Sonhja 2014-11-03 11:50:11
如果我想从外部窗口使用它,那么怎么办?看我的编辑。 – Sonhja 2014-11-03 11:54:32