C# 如何将触发器从父属性设置为子属性
我一直在这个数据触发器上绕圈子,所以它不起作用 我有一个按钮,它有一个默认dropshadow的边框。但是,我想创建一个dep属性,用于切换该属性。然而,我从未达到设定效果的程度C# 如何将触发器从父属性设置为子属性,c#,.net,wpf,.net-4.0,datatrigger,C#,.net,Wpf,.net 4.0,Datatrigger,我一直在这个数据触发器上绕圈子,所以它不起作用 我有一个按钮,它有一个默认dropshadow的边框。但是,我想创建一个dep属性,用于切换该属性。然而,我从未达到设定效果的程度 <Style x:Key="RoundedButton" TargetType="{x:Type Button}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ctrl
<Style x:Key="RoundedButton" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ctrls:RoundedButton">
<Grid>
<Border>
<Border.Style>
<Style TargetType="ctrls:RoundedButton">
<Style.Triggers>
<Trigger Property="IsDropShadowVisible" Value="True">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="1"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
这是基于一个按钮,但作为自定义用户控件实现的…这是遗留代码…我在这里的工作原理
在新的WPF窗口中执行此操作。除了您在这里看到的代码之外,没有其他代码
<Window.Resources>
<Style TargetType="{x:Type local:ShadowButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ShadowButton}">
<Button Name="Button"></Button>
<ControlTemplate.Triggers>
<Trigger Property="IsDropShadowVisible" Value="True">
<Setter TargetName="Button" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="1"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<!-- snip code -->
<local:ShadowButton Height="10" Width="10" IsDropShadowVisible="true"/>
我这里的东西有用
在新的WPF窗口中执行此操作。除了您在这里看到的代码之外,没有其他代码
<Window.Resources>
<Style TargetType="{x:Type local:ShadowButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ShadowButton}">
<Button Name="Button"></Button>
<ControlTemplate.Triggers>
<Trigger Property="IsDropShadowVisible" Value="True">
<Setter TargetName="Button" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="1"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<!-- snip code -->
<local:ShadowButton Height="10" Width="10" IsDropShadowVisible="true"/>
发布完整的XAML。而且,那
DataTrigger
没有意义。使用常规的触发器属性=IsDropShadowVisible。。等等,
@HighCore更新了我的答案您的XAML没有意义。您有一个Style TargetType=“Button”
和一个ControlTemplate TargetType=“ctrls:RoundedButton”
。我建议你看一下介绍性的XAML内容。@HighCore是的……我刚刚添加了一个注释……我正在尝试修复它,但它嵌入了其他地方,并导致了问题……有没有其他方法可以做到这一点?还是我需要修复这个遗留问题?我不认为这意味着你认为这意味着什么。发布完整的XAML。而且,那DataTrigger
没有意义。使用常规的触发器属性=IsDropShadowVisible。。等等,
@HighCore更新了我的答案您的XAML没有意义。您有一个Style TargetType=“Button”
和一个ControlTemplate TargetType=“ctrls:RoundedButton”
。我建议你看一下介绍性的XAML内容。@HighCore是的……我刚刚添加了一个注释……我正在尝试修复它,但它嵌入了其他地方,并导致了问题……有没有其他方法可以做到这一点?还是我需要修复这个遗留问题?我不认为这意味着你认为这意味着什么。如果你考虑到这个评论,那么这就解决了我的问题:只需删除边框样式,命名边框,然后给setter这个targetname。完成。如果您考虑了此注释,那么这就解决了我的问题:只需删除边框样式,命名边框,然后给setter指定targetname。完成。