我是一個經驗豐富的程序員,但對WPF來說是新手。我已經將表單上的textblock綁定到對象屬性,但它不會像我期望的那樣更新表單來設置屬性。綁定似乎是正確完成的 - 如果我使用更新屬性的按鈕進行故障診斷,表單會更改,但是當我最初通過解析本地XML文件在表單的構造函數中設置屬性時,它不會更新。C#WPF綁定行爲
我正在使用C#和VS2010。有人可以引導我做幾個步驟,或者將我引薦給一本書或編碼工具,讓我在這個駝峯。另外,請注意,我選擇通過模仿windowsclient.net中「我如何:構建我的第一個WPF應用程序」中使用的範例來構建事物的方式。如果您認爲我錯誤地回答了這個問題,那麼我會很樂意提供一個更好的教程。
形式XAML:
<Window ...
xmlns:vm="clr-namespace:MyProjectWPF.ViewModels">
<Grid>
<Grid.DataContext>
<vm:MyConfigurationViewModel />
</Grid.DataContext>
<TextBlock Name="textBlock4" Text="{Binding Path=Database}" />
</Grid>
MyConfigurationViewModel類定義:
class MyConfigurationViewModel : INotifyPropertyChanged
{
private string _Database;
public string Database
{
get { return _Database; }
set { _Database = value; OnPropertyChanged("Database"); }
}
public void LoadConfiguration()
{
XmlDocument myConfiguration = new XmlDocument();
myConfiguration.Load("myfile.xml");
XmlNode root = myConfiguration.DocumentElement;
Database = root["Database"].InnerText;
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string Property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(Property));
}
而且代碼隱藏我的XAML形式:
public partial class MyForm : Window
{
private ViewModels.myConfigurationViewModel mcvm
= new ViewModels.myConfigurationViewModel();
public MyForm()
{
mcvm.LoadConfiguration();
}
謝謝。代碼修復工作完美,頂部的解釋是我需要了解爲什麼這些更改沒有推到我的表單。 – LikeMaBell 2011-01-07 20:53:10