组合框默认值

时间:2014-01-30 14:25:12

标签: c# wpf xaml mvvm

我想使用组合框,以下代码正在运行,但现在我想 添加到组合框标题默认值,即。有价值和喜欢 项目,当您打开它时,您可以选择更改它,我该怎么做?

<ComboBox  ItemsSource="{Binding Items}" SelectedValue="{Binding SelectedItem}"  
 Name="comboBox1" Text="Item" Grid.Column="3" Grid.Row="2" />

代码

private List<String> _items;
private String _selectedItem;
private String _selectedBusinessItem;
public List<String> Items
{
    get { return _items; }
    set
    {
        _items = value;
        OnPropertyChanged("Items");
    }
}

public String SelectedItem1
{
    get { return _selectedItem; }
    set
    {
        _selectedItem = value;
        OnPropertyChanged("Items");
    }
}

private void InitCombo()
{
    Items = new List<string> { "item",  "Item2", "Item3" };
    SelectedItem1 = Items[0];
}

3 个答案:

答案 0 :(得分:3)

很难理解你在问,但我认为你只是在寻找ComboBox来显示Items集合中的第一个值。

我相信你可以通过几种方式做到这一点。

首先,您需要修复SelectedValue绑定以匹配您的媒体资源名称,然后删除Text="Item"

<ComboBox  ItemsSource="{Binding Items}" SelectedValue="{Binding SelectedItem1}"  
           Name="comboBox1" Grid.Column="3" Grid.Row="2" />

您可以在代码中将SelectedValue1属性设置为string项中的任何一项。例如:

SelectedValue1 = "item";

-OR -

SelectedValue1 = Items.FirstOrDefault();

我使用FirstOrDefault作为安全措施,这些项目不存在。

-OR -

SelectedValue1 = Items[0];

此处还有其他几种选择。但我会尝试限制答案的范围。

此外,您应该能够将ComboBox.SelectedIndex设置为0。

<ComboBox  ItemsSource="{Binding Items}" SelectedValue="{Binding SelectedItem1}"  
           Name="comboBox1" Grid.Column="3" Grid.Row="2"
           SelectedIndex="0"/>

答案 1 :(得分:1)

我认为您正在谈论链接页面中的ComboBox.Text Property ...:

  

获取或设置当前所选项目的文本

这是一个可以显示消息的空闲字段。它显示ComboBox.Items集合中当前所选项目的值。如果其中一个项目中的文字,那么此TextBox'应该'显示该值。

但是,总会有解决方法。正确的方法是为包含ControlTemplate的{​​{1}}定义新的ComboBoxTextBlock覆盖在所选项目TextBox之上,并在需要时隐藏

有些人认为这样做太多了,所以你可以在StackOverflow上的How to display default text “--Select Team --” in combo box on pageload in WPF?帖子中找到一些替代解决方案。

答案 2 :(得分:0)

  1. 列出项目=新列表{“项目”,“项目2”,“项目3”};

  2. 设置Selected Index = 0,它将选择组合框中的第一个元素Item-source

  3. XAML:

    <ComboBox  ItemsSource="{Binding Items}"  
               Name="comboBox1" Grid.Column="3" Grid.Row="2"
               SelectedIndex="0"/>