在应用程序中维护WPF RadColorPicker的相同最近颜色列表

时间:2015-06-29 06:51:36

标签: .net wpf xaml telerik

我正在寻找为应用程序中的所有RadColorPicker实例维护相同的最近颜色列表。即G。如果用户从一个colorpicker(和colorEditor)控件创建自定义颜色,则用户不必对另一个颜色选择器执行相同操作。对于所有颜色选择器,用户应该在最近的颜色中看到相同的颜色。

我想弄明白,如何实现它。我看到属性RecentColorsItemsSource,它可以在这里使用,但是,然后,我无法让它工作。我正在尝试使用" RecentColorsItemsSource"设置样本颜色。属性,但我遇到运行时错误。以下是xaml代码和代码背后的代码:

Xaml:

<telerik:RadColorPicker x:Name="myColorPicker" IsRecentColorsActive="True" RecentColorsItemsSource="{Binding Path=MyColors}" />

CodeBehind或ViewModel:

public partial class Window9 : Window
{
    public Window9()
    {
        InitializeComponent();
        this.DataContext = this;

        MyColors = new List<Color> { Colors.Red, Colors.Green };
    }

    private IEnumerable<Color> myColors;

    public IEnumerable<Color> MyColors
    {
        get { return myColors; }
        set { myColors = value; }
    }
}

但是使用此代码我收到此错误:

对象引用未设置为对象的实例。

at Telerik.Windows.Controls.RadColorSelector.BindRecentColorsPalette()
at Telerik.Windows.Controls.RadColorSelector.BindXamlElements()
at Telerik.Windows.Controls.RadColorSelector.OnApplyTemplate()
at System.Windows.FrameworkElement.ApplyTemplate()
at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at System.Windows.Controls.Control.MeasureOverride(Size constraint)
at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)

这里的一些帮助会很明显。

2 个答案:

答案 0 :(得分:1)

您可以设置IsRecentColorsActive =“True”

请参阅此link

如果您必须在多个颜色选择器控件实例之间保持最近的颜色,那么您必须利用RecentColorsItemsSource Property。所以基本上你必须保持最近的颜色集合并将相同的集合绑定到你想要分享最近颜色的所有颜色选择器。

答案 1 :(得分:0)

派对有点晚了,但它可能对像我这样遇到同样问题的人有所帮助。

我使用ObservableCollection<Color>为RecentColorsItemsSource取得了一些成功。 Telerik可能会在内部将RecentColorsItemsSource转换为ObservableCollection。

尝试类似:

... MyColors = new ObservableCollection<Color> { Colors.Red, Colors.Green }; ...