0

我需要将 ColorPicker 的 SelectedColor 属性绑定到可用颜色中不存在的自定义颜色。我创建了一个简单的测试来显示我的问题。我的xml:

<xctk:ColorPicker SelectedColor="{Binding Path=Test}"></xctk:ColorPicker>

后面的代码(CurrentStyle.PenColor 返回一个等于 的整数值13109765):

  public Color Test
  {
      get;
      set;
  }

  public MyClass()
  {
     DataContext = this;

     Test = Color.FromArgb((byte)((CurrentStyle.PenColor >> 24) & 0xFF),
               (byte)((CurrentStyle.PenColor >> 16) & 0xFF),
               (byte)((CurrentStyle.PenColor >> 8) & 0xFF),
               (byte)(CurrentStyle.PenColor & 0xFF));
     InitializeComponent();

  }

这就是加载窗口时我的 ColorPicker 的样子:

在此处输入图像描述

不过,当我转到高级颜色时,我可以看到颜色已被识别并正确设置。这是一张照片:

在此处输入图像描述

希望得到您的帮助。非常感谢!

编辑

我实现了 INotifyPropertyChanged,仍然无济于事。这是代码:

public Color Test
    {
        get
        {
            return test;
        } 
        set
        {
            if (test != value)
            {
                test = value;
                OnPropertyChanged("Test");
            }
       }
    }


public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string prop)
    {
        if (this.PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }

也许我在这里做错了。

4

2 回答 2

3

很难从发布的代码中判断这是否是您的问题,但 Test 的类型必须是System.Windows.Media.Color而不是System.Background.Color.

编辑

您从 PenColor 计算的值是 (0, 200, 10, 5),它是透明的,因此显示正确。您是说 (255, 200, 10, 5) 是红色的吗?

于 2013-06-28T08:07:01.610 回答
2

您必须实现 INotifyPropertyChanged 并引发名为“Test”的 PropertyChanged 事件

MSDN有一个例子

INotifyPropertyChanged

这允许 WPF 在您的属性更改时收到通知

于 2013-06-28T05:56:59.193 回答