我有按钮自定义视图:
<UserControl>
...
<Rectangle x:Name="Highlight" Style="{DynamicResource HighlightStyle}"/>
...
<DataTrigger Binding="{Binding Path=IsHighlighted}" Value="true">
<Setter TargetName="Highlight" Property="Opacity" Value="1"/>
</DataTrigger>
...
</UserControl>
按钮用于父视图,如下一个:
<local:MyButton x:Name="Btn1" DataContext="{Binding Path=Btn1}" />
因此,当我需要突出显示按钮时,我正在通过代码执行此操作。像Btn1.IsHighlighted=true;
一样
但在某些时候我需要直接从父XAML设置它。有可能吗?
即。在某些特定视图中,我不希望使用Btn1.IsHighlighted
。相反,我想要这样的东西:
<local:MyButton x:Name="Btn1" DataContext="{Binding Path=Btn1}" IsHighlighted="true" />
答案 0 :(得分:5)
您可以将IsHighlighted注册为MyButton类的属性
private static readonly DependencyProperty IsHighlightedProperty = DependencyProperty.Register
(
"IsHighlighted",
typeof(bool),
typeof(MyButton),
new PropertyMetadata((bool)false)
);
public bool IsHighlighted
{
get { return (bool) GetValue(IsHighlightedProperty); }
set { SetValue(IsHighlightedProperty, value); }
}
编辑添加XAML使用
你的MyButton XAML应该有这样的东西
<Rectangle x:Name="Highlight" Width="100">
<Rectangle.Style>
<Style TargetType="Rectangle">
<Style.Triggers>
<DataTrigger Binding="{Binding IsHighlighted}" Value="True">
<Setter Property="Opacity" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
我实际上测试过Property =&#34; Fill&#34;和价值=&#34;绿色&#34;这里。但改为符合你的情况。
父视图应该有
<local:MyButton x:Name="Btn1" DataContext="{Binding Path=Btn1}" IsHighlighted="true" />