簡體   English   中英

ComboBox WPF數據綁定到DataView

[英]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_dvAddressesField,則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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM