我有一个派生自滑块的类,它使用自定义控件模板并具有一些添加的依赖项属性.我想基于新属性在模板中触发触发器.
例如,我有一个名为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的设计人员和代码背后出现很多问题.
有谁知道是否有一种标准的方法来解决所有这些问题?作为一种解决方法,我尝试通过代码隐藏添加到模板的触发器,但无法使其工作.
看起来有一个更简单的方法可以解决这个问题。
<ControlTemplate.Triggers>
<Trigger Property=local:CustomSlider.ThumbIsVisible" Value="False">
<Setter TargetName="m_Thumb" Property="Visibility" Value="Hidden" />
</Trigger>
</ControlTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)
其中 local 是 CustomSlider 类的命名空间。
归档时间: |
|
查看次数: |
3224 次 |
最近记录: |