我正在创建一个简单的自定义控件,该控件从切换按钮延伸,允许用户直接在XAML中指定选中和未选中的内容。它工作的很好,但它基于触发器,我不知道如何定义触发器,除了风格。如果我定义了样式,那么我会失去任何设置在自定义控件之外的东西。如何在不覆盖现有样式的情况下将触发器添加到WPF自定义控件?
我希望能够做的只是将此触发器附加到控件上其他位置的任何现有样式。
这是样式/触发器的XAML。
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
<Setter Property="Content" Value="{Binding RelativeSource={RelativeSource Self}, Path=UncheckedContent}" />
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Content"
Value="{Binding RelativeSource={RelativeSource Self}, Path=CheckedContent}" />
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
我试图通过继承的支持算法FMP的风格的默认类型,但如果自定义控件有一个明确的风格,其母公司设置将无法正常工作。我也考虑过EventTriggers,但我不相信会有事件来初始化控制。
感谢任何人可以提供的帮助。 :)
感谢您的意见,这非常有帮助。我走了一条不同的路线,并将代码中的现有风格扩展到后面,以添加我的触发器而不破坏现有的风格。您建立的BasedOn建议我已经尝试过,如果设置了明确的样式,则不起作用。我从你的想法中得到了答案,所以我将其标记为答案。 附加的属性理念非常好,我也做了这个改变,谢谢。 :) – 2009-10-02 19:25:45
你介意发布一些你做过的细节吗?我想要做同样的事情。 – stone 2010-08-04 20:02:04
这只是为我节省了很多代码。谢谢! – MattS423 2015-04-15 19:26:20