在代码隐藏中附加行为
本文关键字:代码 隐藏 | 更新日期: 2023-09-27 18:33:11
我有以下 Xaml,用于用作属性网格内编辑器的用户控件。问题是,从后面的代码附加行为的 c# 会是什么样子?
<i:Interaction.Behaviors>
<igExt:XamComboEditorSelectedItemsBehavior SelectedItems="{Binding SelectedItems, ElementName=_uc}"/>
</i:Interaction.Behaviors>
由于这是在 PropertyGrid 中动态加载的编辑器上,因此我只是要创建一个从代码隐藏绑定的编辑器实例,而不必使用非常短且仅包含一个编辑器的不同 xaml 文件。
或者,简单地重新实现 Behavior 中的所有代码并在我在代码隐藏中创建编辑器时调用它会更容易吗?
XamComboEditorSelectedItemsBehavior behavior = new XamComboEditorSelectedItemsBehavior();
behavior.SetBinding(XamComboEditorSelectedItemsBehavior.SelectedItemsProperty, new Binding()
{
ElementName = "_uc",
Path = new PropertyPath("SelectedItems"),
Mode = BindingMode.TwoWay
});
Interaction.GetBehaviors(yourElementName).Add(behavior)
接受的答案在设计器中似乎不起作用,因为永远不会引发OnAttached
事件。在运行时和设计器中都有效的方法是对行为使用 Attach()
方法。在这种情况下,它看起来像这样:
XamComboEditorSelectedItemsBehavior behavior = new XamComboEditorSelectedItemsBehavior();
behavior.SetBinding(XamComboEditorSelectedItemsBehavior.SelectedItemsProperty, new Binding()
{
ElementName = "_uc",
Path = new PropertyPath("SelectedItems"),
Mode = BindingMode.TwoWay
});
multiSelectBehavior.Attach(yourElementName)