c# - ObservableCollection 中的 SelectedItem

标签 c# wpf xaml windows-store-apps

我有:

<DataTemplate x:Name="_ComboBoxTemplate" x:Key="_ComboBoxTemplate">
    <StackPanel Orientation="Horizontal">
        <StackPanel>
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                <TextBlock VerticalAlignment="Center" Text="{Binding}" FontSize="24"/>
            </StackPanel>
        </StackPanel>
    </StackPanel>
</DataTemplate>

<ComboBox x:Name="_criteria" ItemTemplate="{StaticResource _ComboBoxTemplate}" ItemsSource="{Binding}"/>

在后面的代码中:

this.DataContext = new string[] { "0", "1", "2", "3", "4", "5" };

我怎样才能使 ComboBox 中的默认 SelectedItem5

最佳答案

创建一个包含项目列表和所选项目的类:

public class ViewModel
{
    public string[] Items { get; set; }
    public string SelectedItem { get; set; }
}

在代码隐藏中初始化它并将其设置为DataContext:

DataContext = new ViewModel
{
    Items = new string[] { "0", "1", "2", "3", "4", "5" },
    SelectedItem = "5"
}

现在将这两个属性绑定(bind)到您的 ComboBox:

<ComboBox x:Name="_criteria" 
          ItemTemplate="{StaticResource _ComboBoxTemplate}"
          ItemsSource="{Binding Items}"
          SelectedItem="{Binding SelectedItem}"/>

如果您为 SelectedItem 设置双向绑定(bind),DataContext 中的值甚至会在用户更改时自动更新。

为什么在标题中提到 ObservableCollection

关于c# - ObservableCollection 中的 SelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16761250/

相关文章:

c# - Windows Phone 8.1 - 转换器无法使用平台目标 ARM

wpf - VirtualizingStackPanel 不起作用

c# - 组合框的默认值(设置一次)

c# - 启动画面的延迟窗口

c# - 使用 MVVM 模式在自定义控件或 UserControl 上调用方法的正确方法?

c# - 如何基于 DataTemplate 的 DataContext 对象创建 ViewModel?

c# - 如何使用 C# 从 HTML 转换为 PDF?

c# - Windows Azure 服务总线队列 - MessageSender 还是 QueueClient?

c# - 如何从 ViewModel 访问 View 属性?

c# - RowHeaderTemplateSelector 对象参数为空