我有一个用户控件中使用的Xaml,用作属性网格中的编辑器。问题是,c#从后面的代码中附加行为会是什么样的?
<i:Interaction.Behaviors>
<igExt:XamComboEditorSelectedItemsBehavior SelectedItems="{Binding SelectedItems, ElementName=_uc}"/>
</i:Interaction.Behaviors>
由于这是在一个动态加载到PropertyGrid中的编辑器上,我只是要创建一个编辑器实例,其中包含来自代码的绑定,而不是必须拥有非常简短且只包含一个编辑器的不同xaml文件
或者更简单地重新实现Behavior中的所有代码并在我在后面的代码中创建编辑器时调用它?
答案 0 :(得分:17)
XamComboEditorSelectedItemsBehavior behavior = new XamComboEditorSelectedItemsBehavior();
behavior.SetBinding(XamComboEditorSelectedItemsBehavior.SelectedItemsProperty, new Binding()
{
ElementName = "_uc",
Path = new PropertyPath("SelectedItems"),
Mode = BindingMode.TwoWay
});
Interaction.GetBehaviors(yourElementName).Add(behavior)
答案 1 :(得分:0)
接受的答案在设计器中似乎不起作用,因为从未引发OnAttached
事件。一种在运行时以及设计器中均可使用的方法是对行为使用Attach()
方法。在这种情况下,将如下所示:
XamComboEditorSelectedItemsBehavior behavior = new XamComboEditorSelectedItemsBehavior();
behavior.SetBinding(XamComboEditorSelectedItemsBehavior.SelectedItemsProperty, new Binding()
{
ElementName = "_uc",
Path = new PropertyPath("SelectedItems"),
Mode = BindingMode.TwoWay
});
multiSelectBehavior.Attach(yourElementName)