C# 使用{}的事件绑定
我正在代码隐藏中创建一个C# 使用{}的事件绑定,c#,wpf,events,binding,C#,Wpf,Events,Binding,我正在代码隐藏中创建一个文本框 TextBox textBox = new TextBox(); 我还有一个功能: private void TextBox_Focus(object sender, RoutedEventArgs e) { // does something } 我想将TextBox\u Focus绑定到TextBox.GotFocus 而不是像这样单独设置每个属性 TextBox textBox = new TextBox(); textBox.Width = 1
文本框
TextBox textBox = new TextBox();
我还有一个功能:
private void TextBox_Focus(object sender, RoutedEventArgs e)
{
// does something
}
我想将TextBox\u Focus
绑定到TextBox.GotFocus
而不是像这样单独设置每个属性
TextBox textBox = new TextBox();
textBox.Width = 100;
textBox.Height = 25;
textBox.Background = Brushes.White;
textBox.Foreground = Brushes.Blue;
textBox.GotFocus += TextBox_Focus;
我更喜欢使用大括号(花括号){}
:
TextBox textBox = new TextBox()
{
Width = 100,
Height = 25,
Background = Brushes.White,
Foreground = Brushes.Blue
};
但是,当我使用大括号方法时,我无法绑定到事件
我试过做以下几件事,但都没有用
TextBox textBox = new TextBox()
{
Width = 100,
Height = 25,
Background = Brushes.White,
Foreground = Brushes.Blue,
this.GotFocus += TextBox_Focus
};
问题:
是否有一种使用大括号({}
)方法绑定事件的方法
更新:
元素是动态创建的,所以我不能使用XAML。为什么不使用XAML,您会发现它非常灵活。 也是WPF的事
<TextBox x:Name="textBox"
Width="100"
Height="25"
Background="White"
Foreground="Blue"
GotFocus="TextBox_Focus" />
根据您的评论,您可以这样做:
<ListBox ItemsSource="{Binding MyCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding }"
Width="100"
Height="25"
Background="White"
Foreground="Blue"
GotFocus="TextBox_Focus" />
</DataTemplate>
</ListBox.ItemTemplate>
如果在向收藏中添加项目时将收藏设置为可观察收藏,它将为您更新列表框。否。仅用于设置属性或字段。您正在尝试订阅一个事件,该事件在对象初始值设定项语法中不受支持
正如其他评论者所说,XAML是初始化WPF控件的最佳方式
显然Mono支持你的要求。请参阅:试试看
EventManager.RegisterClassHandler(typeof(TextBox)、TextBox.GotKeyboardFocusEvent、new RoutedEventHandler(yourMethod());大括号方法是一个对象初始值设定项,它可以帮助您发现问题的开始,它会说:
我正在代码隐藏中创建一个文本框。
-这通常是一个非常糟糕的做法,除非您有很好的理由。您能解释一下您需要什么,以便我可以告诉您在WPF中实现它的正确方法吗?您可以使用绑定和XAML,unless的GotFocus事件也是可变的。这里的答案有一些额外的信息,可能会引起@NickFreeman-facepalm lol的兴趣。只是为了说明它有多好!:d感谢响应。不幸的是,我希望我可以使用XAML,但是,元素需要动态创建。您仍然可以使用XAML动态添加项目。代码behind不是一个神奇的实体。你想生成什么?它是一个项目的集合,因为DataTemplate
将是前进的方向。@ywm XAML最终都变成了代码。如果在特定的上下文中它更快或更容易,那么你可以使用它,如果不是(即使可能的话)那么就不要了。当然,但是XAML在这种情况下实际上是一样的。但是它符合其他人在维护您的WPF应用程序时所期望的范例。感谢您的解释!我还将研究Mono C.
。感谢您的帮助!这比通过object.event+=event>订阅事件更可取吗thandler
?同样,仍然无法通过对象初始值设定项完成,因此没有回答问题。