我一直在努力将TextBox.Text
绑定到某个对象的公共属性,但不幸的是我还没有完成。如何将公共属性绑定到WPF TextBox.Text属性
实际XAML看起来像:
<Window
<!-- skipped -->
xmlns:local="clr-namespace:Dotnet.Samples.Foobar"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<Window.Resources>
<local:Foobar x:Key="foobar" Foo="Lorem" Bar="Ipsum"
</Window.Resources>
<!-- skipped -->
<TextBox Text="{Binding Source={StaticResource foobar}, Path=Foo}">
<TextBox Text="{Binding Source={StaticResource foobar}, Path=Bar}">
<!-- skipped -->
</Window>
与数据提供程序对象是简单:
public class Foobar
{
public string Foo { get; set; }
public string Bar { get; set; }
public Foobar()
{
}
}
我想我是那种与WPF的各种绑定选项的困惑和我米可能混合起来,所以任何建议将肯定赞赏。
编辑 - 所有的绑定工作正常,剩下的挑战是通知从模型到ViewModel(另一种方式工作)的变化。我已经犯下的“破”的代码来替代回购: http://nanotaboada.svn.beanstalkapp.com/dotnet/trunk/Dotnet.Samples.Rijndael/
随意签,我会很高兴听到这个任何反馈。非常感谢
@devdigital:非常感谢您的详细解释!通过'Window.Resources'实现的类型实例化/构造在(我正在更新原始代码)上工作正常,但仍然没有得到它们的属性集。让我猜 - 我应该实现'INotifyPropertyChanged'吗? – 2011-03-13 21:10:09
不,您不需要在这种情况下 - 只需要通知UI已更改代码,而不是相反方式,只需要通知属性更改。你确定安装者没有被解雇吗?默认情况下,TextBox只会更新失去焦点的属性。如果要在更改属性的同时更改此属性,请在TextBox中键入属性值,然后将绑定表达式中的UpdateSourceTrigger属性值设置为PropertyChanged。请参阅http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx – devdigital 2011-03-13 21:36:50
@devdigital:再次感谢您的回复 - 我已尝试'UpdateSourceTrigger = PropertyChanged'和'Mode = TwoWay'没有更好的运气。 – 2011-03-13 23:34:55