1
我正在爲一個簡單的ETL工具編寫一個窗口的UI。用戶界面由窗口,窗口背後的代碼,窗口的視圖模型和業務邏輯組成。我想爲用戶提供保存UI狀態的功能,因爲大約10-12個文本框的內容將在會話之間重複使用,但是特定於用戶。我想我可以序列化視圖模型,其中包含來自文本框的所有數據,這工作正常,但我無法將序列化XML文件中的信息加載迴文本框。加載並將序列化視圖模型綁定到WPF窗口?
構造窗口的:
public ETLWindow()
{
InitializeComponent();
_viewModel = new ViewModel();
this.DataContext = _viewModel;
_viewModel.State = Constants.STATE_IDLE;
Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
XAML:
<TextBox x:Name="targetDirectory"
IsReadOnly="true"
Text="{Binding TargetDatabaseDirectory, UpdateSourceTrigger=PropertyChanged}"/>
視圖模型相應的屬性:在代碼
private string _targetDatabaseDirectory;
[XmlElement()]
public string TargetDatabaseDirectory
{
get { return _targetDatabaseDirectory; }
set { _targetDatabaseDirectory = value; OnPropertyChanged(DataUtilities.General.Utilities.GetPropertyName(() => new ViewModel().TargetDatabaseDirectory)); }
Load事件後面:
private void loadState_Click(object sender, RoutedEventArgs e)
{
string statePath = this.getFilePath();
_viewModel = ViewModel.LoadModel(statePath);
}
如您所知,LoadModel方法將用戶驅動器上的序列化文件反序列化。
我在網上找不到關於這個問題的很多內容。我知道這可能與我的綁定有關。在反序列化視圖模型後,是否有一些方法可以刷新XAML上的綁定?或者可能刷新視圖模型的所有屬性?或者我完全瘋狂地想這些都可以做到?
謝謝。
感謝凱恩。我明天會去嘗試,當我開始工作。 – 2010-03-17 04:44:36
這工作!感謝凱恩。 – 2010-03-18 17:34:57