我一直在努力將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