XAML:从父视图设置属性?

时间:2015-11-10 10:53:58

标签: c# xaml

我有按钮自定义视图:

<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" />

1 个答案:

答案 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" />