簡體   English   中英

將每個對象的某些變量顯示到組合框中

[英]Display certain variable of each object into a Combobox

快速提問

我有一個此類的對象列表:

public class Whatever
{
    public string Name { get; set; }
    public List<blaBla> m_blaBla { get; set; }
    // ..
}

我想將List<Whatever>鏈接到ComboxBox,用戶可以在其中看到每個Whatever對象的Name 我怎樣才能做到這一點?

您可以像這樣使用ComboBox.ItemTemplate

C#:

List<Whatever> lst = new List<Whatever>();
public MainWindow()
{
    InitializeComponent();
    cmb.ItemsSource = lst;
}

XAML:

<ComboBox Name="cmb">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

或使用DisplayMemberPath

<ComboBox Name="cmb" DisplayMemberPath="Name">            
</ComboBox>

或者只是重寫ToString()函數,它將為您完成這項工作:

public class Whatever
{
    public string Name { get; set; }
    public List<blaBla> m_blaBla { get; set; }
    // ..
    public override string ToString()
    {
       return Name;
    }
}

接着:

List<Whatever> MyList = new List<Whatever>();
public MainWindow()
{
    InitializeComponent();
    MyComboBox.ItemsSource = MyList;
}

創建一個視圖模型:

public ObservableCollection<Whatever> WhCol
{
    get { return this.Name; }
    set { }
}

然后是匹配視圖

<ComboBox DisplayMemberPath="Name" ItemsSource="{Binding WhCol}" />

根據Model-View-Modelview模式

如果您不想根據用戶輸入進行更改,則此方法更適合。 (對於組合框而言,這種情況很少見)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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