在WPF后面的代码中通过Enter Key更新数据绑定

时间:2017-06-01 15:23:24

标签: wpf data-binding

我有一个FrameworkElementFactory就像在代码中创建的文本框一样工作,因此没有xaml代码,我也在代码中设置了带有数据绑定的文本框。现在我想按 Enter 键更新此文本框数据绑定。我已经在这个Link中阅读了一种附加行为的方法,但它似乎与xaml代码一起使用。有没有办法在代码后面设置附加行为?

ListBox DDF_List = new ListBox();

FrameworkElementFactory Editable_TextBox = new FrameworkElementFactory(typeof(TextBox));
Binding text_binding = new Binding("Value");
Editable_TextBox.SetBinding(TextBox.TextProperty, text_binding);

DataTemplate Text_Layout = new DataTemplate();
Text_Layout.VisualTree = Editable_TextBox;
DDF_List.ItemTemplate = Text_Layout;

1 个答案:

答案 0 :(得分:0)

您几乎肯定会在XAML中使用FrameworkElementFactory执行此操作。你得到的是在XAML中做所有事情的完美案例。但如果你致力于以艰难的方式去做,那就是这样的。

使用Editable_TextBox.SetValue( InputBindingsManager.UpdatePropertySourceWhenEnterPressedProperty, TextBox.TextProperty); ,您可以像TextBox上的任何其他相关属性一样设置它:

itemNameTextBox

更一般地说,现在将附加属性应用于C#中的InputBindingsManager.SetUpdatePropertySourceWhenEnterPressed(itemNameTextBox, TextBox.TextProperty); ,其中var itemNameTextBox = new TextBox { Name = "itemNameTextBox" }; var binding = new Binding("ItemName") { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged }; itemNameTextBox.SetBinding(TextBox.TextProperty, binding); // This is the line you're asking for: InputBindingsManager.SetUpdatePropertySourceWhenEnterPressed(itemNameTextBox, TextBox.TextProperty); 是TextBox:

<TextBox 
    Name="itemNameTextBox"
    Text="{Binding Path=ItemName, UpdateSourceTrigger=PropertyChanged}"
    b:InputBindingsManager.UpdatePropertySourceWhenEnterPressed="TextBox.Text"
    />

附加属性,这个C#:

section4

与此XAML完全等效:

bullets