微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WPF - 如何从嵌套模板化控件的触发器设置控件的依赖属性

如何解决WPF - 如何从嵌套模板化控件的触发器设置控件的依赖属性

我有一个子类的 ContentControl (MySpecialContentControl) 并向其中添加一个名为“mySpecialDP”的 DP。 在此控件的样式模板中,模板化的“ResizeDecorator”(也是子类控件)中还有一些其他控件,如下所示:

 "Local": {
    "Authority": "https://accounts.google.com/","ClientId": "4....apps.googleusercontent.com","PostlogoutRedirectUri": "https://localhost:44380/authentication/logout-callback","RedirectUri": "https://localhost:44380/authentication/login-callback","ResponseType": "id_token token"
  }

我试图找到一种方法来从模板化控件 (ResizeDecoratorTemplate) 的 IsMouSEOver 触发器中设置“mySpecialDP”属性。 ResizeDecoratorTemplate 可以知道他的“模板父级”(controls:MySpecialContentControl) 吗?

这样做的原因是内容控件是 Canvas 的一部分,如果用户单击 Canvas 内的某处,或者特别是在 ResizeThumb 控件上,我需要知道调用 MouseLeftButtonDown 或 MouseMove 时。我的想法是使用枚举来区分。

    <ControlTemplate x:Key="ResizeDecoratorTemplate" targettype="{x:Type Control}">
        <Grid>
            <controls:ResizeThumb Height="1" Margin="0,-1,0"/>
            <controls:ResizeThumb Width="1" Margin="-1,0"/>
        </Grid>

        <ControlTemplate.Triggers>
            <Trigger Property="IsMouSEOver" Value="True">
                <Setter Property="mySpecialDP" Value="X"/>
            </Trigger>
        </ControlTemplate.Triggers>
        
    </ControlTemplate>

    <Style x:Key="ControlStyle" targettype="{x:Type controls:MySpecialContentControl}">
        <Setter Property="mySpecialDP" Value="Y"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate targettype="{x:Type controls:MySpecialContentControl}">
                    <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
                        <Control x:Name="ResizeDecorator" Template="{StaticResource ResizeDecoratorTemplate}" Visibility="Collapsed"/>
                        <ContentPresenter Content="{TemplateBinding ContentControl.Content}"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="Selector.IsSelected" Value="True">
                            <Setter TargetName="ResizeDecorator" Property="Visibility" Value="Visible"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。