如何使用listview / combo框uwp设置默认选定项目

时间:2016-05-01 19:26:44

标签: c# combobox win-universal-app

我希望ComboBox具有默认选定值,在这种情况下,它将是viewmodel中的第一个项目。

<ComboBox  Name="cat_choices" ItemsSource="{x:Bind ViewModel.Categories}" Width="300" VerticalAlignment="Center">
    <ComboBox.ItemTemplate>
        <DataTemplate x:DataType="local:Category">                            
            <TextBlock  Text="{x:Bind cat_name}"></TextBlock>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

来自viewmodel:

private ObservableCollection<Category> categories = new ObservableCollection<Category>();
public ObservableCollection<Category> Categories { get { return this.categories;  } }

谢谢。

2 个答案:

答案 0 :(得分:1)

在ViewModel中创建2个新属性:

private int _SelectedIndex = 0;

    public int SelectedIndex 
    {
        get
        {
            return _SelectedIndex;
        }
        set
        {
            _SelectedIndex = value;
            RaisePropertyChanged(nameof(SelectedIndex));
        }
    }

private Category _SelectedQuality = null;
    public Category SelectedQuality
    {
        get
        {
            return _SelectedQuality;
        }
        set
        {
            _SelectedCategory = value;
            RaisePropertyChanged(nameof(SelectedCategory ));
        }
    }

完成填充类别后,请设置SelectedCategory = Categories.First();

在xaml中,将ComboBox的SelectedIndexSelectedItem属性绑定到ViewModel中新创建的属性,设置绑定模式=双向。

答案 1 :(得分:0)

如何在ComboBox背后的代码中的SelectedIndex事件中设置0Loaded?由于您总是希望将所选项目设置为第一项,因此这很简单。

或者

如果您希望在XAML中实现它,请在ComboBox中使用EventTrigger Loaded事件,并使用Setter将属性SelectedIndex设置为{ {1}}。