根据布尔值更改边框颜色

问题描述:

我有一个边框,我想根据布尔变量改变它的颜色。我用link here来实现BooleanColor转换器。根据布尔值更改边框颜色

的代码看起来是这样的:

的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}}}" /> 

我使用相同的代码,它不是找到它。

+0

我在这段代码中看不出任何错误。 LivenessActive在哪里定义? DataContext是否相应地设置? – dkozl 2014-11-03 11:47:56

+0

True ... DataContext !!我怎么能把它忘了......请发表你的回答,这样我就可以让它升级... – Sonhja 2014-11-03 11:50:11

+0

如果我想从外部窗口使用它,那么怎么办?看我的编辑。 – Sonhja 2014-11-03 11:54:32

综上所述意见,因为似乎有什​​么不对以上代码会提示没有与结合上下文

Background="{Binding Path=LivenessActive, Converter={StaticResource BrushColorConverter}}" 

您不能从另一个Window引用一个Window问题。如果您有两个独立的Window s,每个Border应触发相同的属性更改,那么您将两个窗口的DataContext设置为同一个视图模型实例。

+0

非常感谢!这正是我需要的! – Sonhja 2014-11-03 14:31:29