.net – WPF:我可以通过样式定义设置附加属性吗?

.net – WPF:我可以通过样式定义设置附加属性吗?,第1张

概述有没有办法通过Style设置附加属性? 我有例如设置交互内容的按钮(来自System.Windows.Interactivity) <Button> <i:Interaction.Triggers> ... </i:Interaction.Triggers></Button> 现在我想创建一个设置了Interaction.Triggers属性的样式,从而通过必须在每个Button 有没有办法通过Style设置附加属性?

我有例如设置交互内容的按钮(来自System.Windows.Interactivity)

<button>  <i:Interaction.Triggers>    ...  </i:Interaction.Triggers></button>

现在我想创建一个设置了Interaction.Triggers属性的样式,从而通过必须在每个button实例上指定该属性来替换冗余.这可能在WPF中吗?

<Style Target={x:Type button}>  <!-- ??? -->  <Setter Propertyname="i.Interaction.Triggers">  ...

不知怎的,我怎么看不清楚,但是我在网上看到了其他的例子,其中附加的属性似乎可以从一个样式中访问…

更新

所以基本上这是一个与Interaction.Triggers没有办法“设置”某事的问题.我该如何重用一组交互定义?

解决方法 这是只读集合属性的已知问题(与inputBindings集合相同).为了解决这个问题,我创建了一个附加属性:

public static StyleTriggerCollection GetTriggers(DependencyObject obj) {    return (StyleTriggerCollection)obj.GetValue(TriggersProperty);}public static voID SetTriggers(DependencyObject obj,StyleTriggerCollection value) {    obj.SetValue(TriggersProperty,value);}public static Readonly DependencyProperty TriggersProperty =    DependencyProperty.Registerattached("Triggers",typeof(StyleTriggerCollection),typeof(ControlExtensions),new UIPropertyMetadata(null,OnTriggersChanged));static voID OnTriggersChanged(DependencyObject d,DependencyPropertyChangedEventArgs e) {    var triggers = (StyleTriggerCollection) e.NewValue;    if (triggers != null) {        var existingTriggers = Interaction.GetTriggers(d);        foreach (var trigger in triggers) {            existingTriggers.Add((TriggerBase)trigger.Clone());        }    }}

此属性使用自定义StyleTriggerCollection,因为标准触发器集合没有公共构造函数:

public class StyleTriggerCollection : Collection<TriggerBase>{}

在样式设置器中,您可以像这样使用它:

<Setter Property="my:ControlExtensions.Triggers">    <Setter.Value>        <my:StyleTriggerCollection>            <!-- Put your triggers here -->        </my:StyleTriggerCollection>    </Setter.Value></Setter>
总结

以上是内存溢出为你收集整理的.net – WPF:我可以通过样式定义/设置附加属性吗?全部内容,希望文章能够帮你解决.net – WPF:我可以通过样式定义/设置附加属性吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存