C# 如何将触发器从父属性设置为子属性

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

我一直在这个数据触发器上绕圈子,所以它不起作用

我有一个按钮,它有一个默认dropshadow的边框。但是,我想创建一个dep属性,用于切换该属性。然而,我从未达到设定效果的程度

<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。完成。