不要做直接綁定。
你想要做的是這樣的:
觀點:
<TextBlock x:Name="field_name" TextWrapping="Wrap" Text="{Binding fieldName}">
</TextBlock>
視圖模型:
public class ViewModel:INotifyPropertyChanged
{
public ViewModel()
{
//Load DB and set the fieldName property here
}
public string FieldName
{
get{return _fieldName;}
set{_fieldName=value;
OnPropertyChanged("FieldName");
}
protected void OnPropertyChanged(string propertyName)
{
if(PropertyChanged!=null)
PropertyChanged(this,new PropertyChangedEventArgs(propertyName));
}
public event public event PropertyChangedEventHandler PropertyChanged;
}
這是一種叫做MVVM(ModelViewViewModel)。 ViewModel綁定到視圖的DataContext,然後可以將ViewModel的屬性綁定到視圖中的元素。有很多周圍的框架,以使它更容易些:
- MVVMLite - 上codeplex.com
- Caliburn.Micro - 上codeplex.com
所有幫你綁定視圖模型到視圖並提供一堆幫助程序,以便您編寫較少的代碼。如果你打算做任何基於Xaml的編碼,你確實需要對MVVM進行編碼,因爲這是編碼這種類型技術的事實上的「標準」方式。