XAML自定义控件 - 颜色属性绑定

时间:2016-08-14 16:40:50

标签: c# wpf xaml

我有一个用XAML编写的相当简单的自定义控件,但是我在编写一些依赖属性方面遇到了一些麻烦,因此颜色可以改变。

以下是我们感兴趣的控件。

<Viewbox>
  <Path Name="shape" Fill="Gray" Data="abc"/>
</Viewbox>
<ControlTemplate.Triggers>
  <Trigger Property="IsChecked" Value="True">
    <Setter TargetName="shape" Property="Fill" Value="Gold" />
  </Trigger>
</ControlTemplate.Triggers>

我想要实现的是将此处的填充(灰色和金色)替换为我可以更改为我使用控件的属性。

所以我最终可以用这个

<MyControl BackColor="Blue" ForeColor="Red" />

我尝试了一些不同的视频,包括MVA,但我不知道我哪里出错了。

我已尝试过这种依赖属性。

 public Color BackgroundColor
    {
        get { return (Color)GetValue(BackgroundColorProperty); }
        set { SetValue(BackgroundColorProperty, value); }
    }

    // Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty BackgroundColorProperty =
        DependencyProperty.Register("BackgroundColor", typeof(Color), typeof(StarRatingControl), new PropertyMetadata(Color.FromRgb(0,0,0)));

然后使用

Fill="{TemplateBinding BackgroundColor}"

但我得到以下错误:

&#34;找不到静态成员&#39; BackgroundColorProperty&#39;在类型&#39; ToggleButton&#39;。&#34;

&#34;会员&#34; BackgroundColor&#34;无法识别或无法访问。&#34;

这两个都在XAML文件中,而不是CS文件。

请有人帮忙/解释我出错的地方。

1 个答案:

答案 0 :(得分:0)

确保您的页面或用户控件具有名称,以便使用pageRoot进行演示。

然后使用以下代码绑定到该属性。

Fill="{Binding BackgroundColor, ElementName=pageRoot"}

这应该为你找到依赖属性。