[英]WPF Combo Box and Data Binding to other classes
所有,
我真的陷入了一個非常基本的概念 - 我找不到我真正理解的答案。
我有一個視圖 - viewContacts。 它的datacontext是一個viewmodel - viewmodelContacts。
在視圖中我有'標題'的組合框(你知道......先生,夫人,小姐等)。 我想綁定itemssource,以便顯示一個選項列表,並綁定SelectedValue,以便將密鑰存儲在viewmodelContacts TitleId屬性中。
'source'列表,如果標題(我想將ItemsSource綁定到)實際上是在一個單獨的靜態類中 - 請注意不是viewmodel!
internal static class Titles
{
static IList<Title> _colTitles = null;
static Titles()
{
_colTitles = new List<Title>();
_colTitles.Add(new Title() { TitleId = 1, Description = "Mr." });
_colTitles.Add(new Title() { TitleId = 2, Description = "Mrs." });
_colTitles.Add(new Title() { TitleId = 3, Description = "Miss." });
_colTitles.Add(new Title() { TitleId = 4, Description = "Ms." });
}
internal static IList<Title> GetTitles()
{
return _colTitles;
}
}
(稍后,當然,這些東西將從數據庫中獲取)。
這個簡單的任務超出了我作為WPF開發人員的才能。
如何將ItemsSource設置為此靜態類? 如何進一步將DisplayMemberPath設置為基礎Title對象的Description屬性?
我將SelectedValue和SelectedValuePath設置為什么?
真的希望有人可以幫助我解決一個看似無法解決的簡單問題。
謝謝,格雷
在您的viewModel中創建一個如下屬性:
public IList<Title> VmTitles
{
get
{
return Titles.GetTitles();
}
}
private Title _selectedTitle;
public Title SelectedTitle
{
get
{
return _selectedTitle;
}
set
{
if (value != _selectedTitle)
{
_selectedTitle = value;
OnPropertyChanged("SelectedTitle");
}
}
}
然后在你的.xaml中你這樣做:
<ComboBox x:Name="cboTitle" ItemsSource="{Binding Path=VmTitles}" DisplayMemberPath="Description" SelectedItem="{Binding Path=SelectedTitle}" />
<ComboBox x:Name="cboTitle" SelectedValuePath="TitleId" DisplayValuePath="Description" SelectedValue="{Binding PropertyToBeUpdatedHere}"/>
然后在代碼中設置組合框的項目源。
cboTitle.ItemsSource = Titles.GetTitles();
只需使用ObjectDataProvider。
<UserControl.Resources>
<ObjectDataProvider x:Key="cboSource" ObjectType="local:Titles" MethodName="GetTitles"/>
</UserControl.Resources>
<ComboBox ItemsSource="{Binding Source={StaticResource cboSource}}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
ps:你必須將內部靜態更改為公共靜態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.