[英]ComboBox WPF Databinding to a DataView
假設我的GUI上有一個ComboBox和2個TextBox項。 我有一個DataView數據(City,PostalCode,Street,ID)。 在初始化整個事情時,我用一些數據填充我的DataView :)
City 1, 11111, Street 1, 1
City 1, 22222, Street 2, 2
City 1, 33333, Street 3, 3
現在我想將它綁定到我的ComboBox。 DataView是一個名為m_dvAdresses
的類成員,但此代碼沒有幫助:
ItemsSource="{Binding Source=m_dvAdresses}"
SelectedValuePath="ID"
DisplayMemberPath="Street">
另外,我想讓我的2個ComboBox項目顯示PostalCode和City,具體取決於我在ComboBox中選擇的內容。 就像我選擇“Street 2”一樣,TextBox1給我看“City 1”,TexBox2給我看“22222”......
如何僅在WPF代碼中綁定所有這些?
如果m_dvAddresses
是Field,則WPF無法綁定到它 。 WPF只能綁定到CLR屬性和WPF DependencyProperty
。
public DataView Addresses
{
get { return m_dvAddresses; }
}
另外,為了獲得最豐富的WPF體驗,請考慮使用集合類型
ObservableCollection
(或
IBindingList
某種衍生物)。
這樣,對集合本身的所有更改都會適當地發布到GUI。
編輯:我現在意識到你正在使用完全可綁定的DataView
。
要回答你的第二個問題(給定一個帶有x:Name="Address"
的ComboBox
x:Name="Address"
):
<TextBox Text="{Binding SelectedItem.City, ElementName=Address}" />
<TextBox Text="{Binding SelectedItem.Zip, ElementName=Address}" />
您需要做的是將m_dvAddresses
作為類中的屬性公開,如@sixlettervariables所述。 之后,要從XAML訪問它,您需要指定綁定的RelativeSource
屬性,以指向類本身,如下所示(此處我的控件是一個Window
):
ItemsSource="{Binding Addresses, RelativeSource={RelativeSource AncestorType=Window}}"
Name="cmbAddresses"
對於文本框,您必須按如下方式指定其綁定
<TextBox Name="TextBox1"
Text="{Binding SelectedItem.PostalCode, ElementName=cmbAddresses}"/>
類似於第二個TextBox
希望這可以幫助 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.