我有以下的列數據表:如何綁定的組合框的DataTable
ID,名稱,描述的ParentId
,並希望創建一個實現組合框WPF控件(.NET 4.0框架)其中顯示了綁定到id值的名稱。因此,當用戶選擇顯示在組合框中的名稱時,後面的邏輯必須檢索其id值。
如果有人能夠展示上述方法,我將非常感激。
我有以下的列數據表:如何綁定的組合框的DataTable
ID,名稱,描述的ParentId
,並希望創建一個實現組合框WPF控件(.NET 4.0框架)其中顯示了綁定到id值的名稱。因此,當用戶選擇顯示在組合框中的名稱時,後面的邏輯必須檢索其id值。
如果有人能夠展示上述方法,我將非常感激。
像這樣:
在你的XAML文件中,提出:
<ComboBox x:Name="myComboBox" DisplayMemberPath="Name" SelectedValuePath="id" />
在後面的代碼,把:
myComboBox.ItemsSource = myTable;
(myTable的是你提到的表的引用)
然後,您可以使用快遞到達組合框中當前選定人員的ID離子:
NameComboBox.SelectedValue
DataTable不能直接綁定。您必須從myTable.AsEnumerable()綁定myTable.DefaultView或IEnumerable。 – Nps 2012-12-29 22:18:57
只有'myComboBox.ItemsSource = myTable.DefaultView;'有效。 – Igor 2013-10-09 18:48:56
ItemsSource也可以在XAML中設置:ItemsSource =「{Binding myProperty,Mode = OneWay}」。正如Nps/Igor所說,該屬性應該返回一個DataView而不是一個DataTable。 – Jeff 2013-11-21 18:30:46
private void InitCountry()
{
BasicData basicData = new DAL.BasicData();
DataTable CountryListDT = basicData.GetCountryList();
txtCountry.SelectedIndex = 0;
txtCountry.ItemsSource = CountryListDT.DefaultView;
}
private void txtCountry_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
BasicData basicData = new DAL.BasicData();
object obj = (object)e.AddedItems;
Int32 CountId = (Int32)txtCountry.SelectedValue;
InitProvince(CountId);
}
MVVM圖案溶液
XAML:
<ComboBox
x:Name="myComboBox"
DisplayMemberPath="Name"
SelectedValuePath="id"
ItemsSource="{Binding myDataTable}"
SelectedValue="{Binding theID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
>
「名稱」 和 「ID」 是在myDataTable列。
代碼後面:
private MyViewModel _myViewModel = new MyViewModel();
this.DataContext = _myViewModel;
MyViewModel類
public DataTable myDataTable { get; set; }
public short theID { get; set; }
選定的值(行)下的 「ID」 欄得到分配給 'theID'。
我的XAML:
<ComboBox Margin="10,0,0,0" x:Name="listStatus"
HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="200" SelectionChanged="listStatus_SelectionChanged"
DisplayMemberPath="Status" SelectedValuePath="StatusID" />
後面的代碼:
private void Bind_StatusList()
{
Service1 serv = new Service1();
dtStatus = serv.GetStatuses(); // a WCF service getting the DataTable from a view from the database.
listStatus.ItemsSource = dtStatus.DefaultView;
}
窗口開始時,這不會給選定的選項,但至少在狀態的列表顯示我點擊comboBox的時間。
您不需要爲此創建控件... – 2010-05-09 18:07:36