我有一个用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文件。
请有人帮忙/解释我出错的地方。
答案 0 :(得分:0)
确保您的页面或用户控件具有名称,以便使用pageRoot进行演示。
然后使用以下代码绑定到该属性。
Fill="{Binding BackgroundColor, ElementName=pageRoot"}
这应该为你找到依赖属性。