wpf - 根据 bool 值更改边框颜色

标签 wpf xaml converter

我有一个边框,我想根据 bool 变量更改它的颜色。我用了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 并实现了 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/

相关文章:

c# - WPF控制大量数据的性能问题

c# - 如何找到 Windows Phone 8.1 Xaml 应用程序内存泄漏的原因?

c# - 如何将 float 转换为小数,以便我可以上下显示数字

.net - 在 WPF 组合框中查找项目

c# - WPF : MvvmLight, 用户控件,绑定(bind)

c# - 从 WPF 中的页面内调用公共(public) MainWindow 函数

c# - 使用 ffmpeg NReco 包装库转换视频时出错

c# - 将 HttpPostedFileBase - pdf 类型转换为 png/jpg 类型

c# - 使某些行在 ViewModel 的 DataGrid 中不可选择

c# - MVVM-更改 View 模型中的字段时验证模型