簡體   English   中英

將對象的值綁定到存儲在列表中的組合框

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

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