![](/img/trans.png)
[英]Data binding an Enum stored in an object into a Winforms ComboBox?
[英]Binding a value of an object to a combobox which is stored in a list
我想將存儲在ObersvableCollection中的每個對象的值綁定到ComboBox。 不幸的是,它不起作用。
<ComboBox Grid.Column="1" Margin="0,0,0,5" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontSize="15" ItemsSource="{Binding Path=UserAccounts}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding EMailAddress}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
在后面的代碼中,我設置了DataContext:
this.DataContext = PersitentDataModelUserSettings.Instace.UserAccounts;
這是模型:
public class PersitentDataModelUserSettings : ModelBase
{
private static PersitentDataModelUserSettings instance = new PersitentDataModelUserSettings();
public static PersitentDataModelUserSettings Instance
{
get { return instance; }
set { instance = value; }
}
private ObservableCollection<AccountSettingsObj> _userAccounts = new ObservableCollection<AccountSettingsObj>();
public ObservableCollection<AccountSettingsObj> UserAccounts
{
get { return _userAccounts; }
set
{
_userAccounts = value;
OnPropertyChanged("UserAccounts");
}
}
}
這是對象類型:
[XmlRoot]
public class AccountSettingsObj : ModelBase
{
public string FirstName { get; set; }
public string LastName { get; set; }
private string _eMailAddress;
public string EMailAddress
{
get { return _eMailAddress; }
set
{
_eMailAddress = value;
OnPropertyChanged("EMailAddress");
}
}
}
謝謝!
您正在將comboBox的ItemSource設置為此:
ItemsSource="{Binding Path=UserAccounts}"
但您也可以將ComboBox的DataContext設置為此:
this.DataContext = PersitentDataModelUserSettings.Instace.UserAccounts;
因此,綁定引擎正在UserAccounts
中尋找屬性UserAccounts
。
這可以通過兩種方式解決:
可以將ItemsSource設置為這樣的綁定: ItemsSource="{Binding}"
。 這樣,您說的是ItemSource
與ComboBox的DataContext
相同。
或將DataContext設置為僅實例: this.DataContext = PersitentDataModelUserSettings.Instace.UserAccounts;
。 這樣,您可以將DataContext設置為指向PersitentDataModelUserSettings的實例,並讓BindingEngine在PersitentDataModelUserSettings中查找屬性UserAccounts 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.