小编Bru*_*eLH的帖子

如何在ControlTemplate触发器中使用自定义属性

我有一个派生自滑块的类,它使用自定义控件模板并具有一些添加的依赖项属性.我想基于新属性在模板中触发触发器.

例如,我有一个名为ThumbIsVisible的新依赖项属性,当设置为false时,我只需要滑块的拇指部分为hiddin.我的控件模板如下所示:

<Slider.Template>
<ControlTemplate TargetType="{x:Type Slider}">
...
<Track.Thumb>
<Thumb x:Name="m_Thumb" Style="{StaticResource SliderThumbStyle}" />
...
Run Code Online (Sandbox Code Playgroud)

我想添加一个看起来像这样的触发器:

<ControlTempate.Trigger>
<Trigger Property="ThumbIsVisible" Value="False">
<Setter TargetName="m_Thumb" Property="Visibility" Value="Collapsed" />
Run Code Online (Sandbox Code Playgroud)

马上我可以看到这不起作用,因为我将控件tempate的目标类型设置为Slider.但是,如果我改变它说:

<ControlTemplate TargetType="{x:Type local:myCustomSlider}">
Run Code Online (Sandbox Code Playgroud)

然后我遇到与控件不同的模板类型的问题.解决这个问题的唯一方法是使用local:myCustomSlider作为类型而不是Slider来创建xaml.但是,这样做会导致VisualStudio的设计人员和代码背后出现很多问题.

有谁知道是否有一种标准的方法来解决所有这些问题?作为一种解决方法,我尝试通过代码隐藏添加到模板的触发器,但无法使其工作.

wpf

7
推荐指数
1
解决办法
3224
查看次数

标签 统计

wpf ×1