我是WPF的新手,我正試圖理解如何使用數據綁定將我的窗口上的控件綁定到我代碼背後的對象。我從代碼隱藏中看到了有關訪問XAML對象的幾個問題,但這不是我正在尋找的。我已經知道如何做到這一點。如何從XAML中訪問代碼中的對象
label1.Content = LabelText;
listbox1.ItemsSource = ListItems;
我也看到了有關如何從XAML訪問代碼隱藏類的答案。
<local:MyClass x:Key="myClass" />
但我不明白如何將其應用於該類的特定實例。這是我想要做的一個例子。 '綁定'顯然是不正確的。這是我需要幫助的。
public partial class MainWindow : Window
{
private string _labelText;
private List<string> _listItems = new List<string>();
public MainWindow()
{
InitializeComponent();
_labelText = "Binding";
_listItems.Add("To");
_listItems.Add("An");
_listItems.Add("Object");
}
public string LabelText
{
get { return _labelText; }
set { _labelText = value; }
}
public List<string> ListItems
{
get { return _listItems; }
set { _listItems = value; }
}
}
<Window x:Class="SO_Demo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SO Demo" Height="160" Width="225">
<Grid DataContext="MainWindow">
<Label x:Name="label1" Width="80" Height="25" Margin="12,12,0,0"
Content="{Binding Path=LabelText}"
HorizontalAlignment="Left" VerticalAlignment="Top" />
<ListBox x:Name="listbox1" Width="100" Height="60" Margin="12,44,0,0"
ItemsSource="{Binding Path=ListItems}" DisplayMemberPath="ListItems"
HorizontalAlignment="Left" VerticalAlignment="Top" />
</Grid>
</Window>
我讀過的書和教程使它聽起來像這樣應該很簡單。我錯過了什麼?
這有助於很多!我想我記得在某處閱讀source屬性(和target?)必須是依賴屬性。真的嗎?謝謝! – JNygren 2013-03-04 22:28:34
幾乎 - 你已經倒退了。 Source屬性可以是任何公共屬性。使用INotifyPropertyChanged接口,以便對源的更新將自動反映到目標中。 Target需要成爲'DependencyProperty'。 [此MSDN主題](http://msdn.microsoft.com/en-us/library/ms752347.aspx#creating_a_binding)詳細描述了「DataBinding」,並詳細說明了源和目標。 – 2013-03-04 22:51:42