gpt4 book ai didi

c# - XAML:从父 View 设置属性?

转载 作者:行者123 更新时间:2023-12-02 15:50:56 25 4
gpt4 key购买 nike

我有按钮自定义 View :

<UserControl>
...
<Rectangle x:Name="Highlight" Style="{DynamicResource HighlightStyle}"/>
...
<DataTrigger Binding="{Binding Path=IsHighlighted}" Value="true">
<Setter TargetName="Highlight" Property="Opacity" Value="1"/>
</DataTrigger>
...
</UserControl>

按钮在父 View 中使用,如下所示:

<local:MyButton x:Name="Btn1" DataContext="{Binding Path=Btn1}" />

因此,当我需要突出显示按钮时,我是通过代码执行此操作的。就像Btn1.IsHighlighted=true;但有时我需要直接从父 XAML 进行设置。可能吗?

即在某些特定 View 上,我不想使用 Btn1.IsHighlighted 。相反,我想要这样的东西:

<local:MyButton x:Name="Btn1" DataContext="{Binding Path=Btn1}" IsHighlighted="true" />

最佳答案

您可以将 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=“Fill”和Value=“Green”。但已更改以符合您的情况。

父 View 应该有

<local:MyButton x:Name="Btn1" DataContext="{Binding Path=Btn1}" IsHighlighted="true" />

关于c# - XAML:从父 View 设置属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33628357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com