我是 WPF 数据绑定(bind)的新手,有点卡住了。
显然我的文本框没有正确绑定(bind)到我想要的数据元素,我也不知道为什么。
首先在我的 MainWindow.xaml
文件中,我声明了一个对象:
<Window.Resources>
<local:Aircraft x:Key="Aircraft"/>
</Window.Resources>
这会在 MainWindow.InitializeComponent()
期间创建一个 Aircraft 类型的对象
(我可以通过在 Aircraft 的构造函数上放置一个断点来验证这一点)
Aircraft
类在 .cs
文件中定义,其属性 Pilot
具有属性 Weight
,因此myAircraft.Pilot.Weight
是一个 int
。
接下来,我尝试将文本框绑定(bind)到此属性:
<TextBox Name="PICWeight" DataContext="{Binding Source={StaticResource Aircraft}, Path=Pilot.Weight}" />
应用程序编译并运行,但是当我将数字文本放入文本框,然后将焦点移动到另一个文本框时,我希望看到 Pilot.Weight
的 setter
> 被调用(我有一个断点)。它没有。
我相信应该有一个从 String(从文本框)到 int(Weight 属性的类型)的默认 ValueConverter,并且文本框应该有 LostFocus
的默认更新源事件。
我是否正确指定了绑定(bind)?
我需要创建一个 ValueConverter,还是明确指定更新事件?
还有什么我做错了吗?
最佳答案
您需要绑定(bind) Text 属性,而不仅仅是 DataContext,例如:
<TextBox Name="PICWeight" DataContext="{Binding Source={StaticResource Aircraft}}" Text="{Binding Path=Pilot.Weight}" />
或:
<TextBox Name="PICWeight" Text="{Binding Source={StaticResource Aircraft}, Path=Pilot.Weight}" />
关于c# - WPF 数据绑定(bind)的新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4742449/