wpf - 如何在组合框中将项目设置为选中

标签 wpf mvvm combobox set selecteditem

似乎没有人找到一种方法来将组合框设置为使用 SelectedItem="Binding Property"选中。

是在组合框项目源中的 ViewModel 对象中使用 IsSelected 属性的解决方案吗?

最佳答案

不知道为什么不能在没有看到代码的情况下将数据绑定(bind)到 ComboBox 上的 SelectedItem。下面向您展示了如何使用 CollectionView 执行此操作,该 CollectionView 具有内置的组合框支持的当前项目管理。 CollectionView 有一个 CurrentItem 获取属性,您可以使用它来获取当前选定的内容。

XAML:

<Window x:Class="CBTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <StackPanel>
        <ComboBox 
            ItemsSource="{Binding Path=Names}"
            IsSynchronizedWithCurrentItem="True">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}" />
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
        <TextBlock Text="{Binding Path=Names.CurrentItem}" />
    </StackPanel>
</Window>

后面的代码:
using System.Collections.Generic;
using System.Windows;
using System.Windows.Data;

namespace CBTest
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            DataContext = new VM();
        }
    }

    public class VM
    {
        public VM()
        {
            _namesModel.Add("Bob");
            _namesModel.Add("Joe"); 
            _namesModel.Add("Sally"); 
            _namesModel.Add("Lucy");

            Names = new CollectionView(_namesModel);

            // Set currently selected item to Sally.

            Names.MoveCurrentTo("Sally");
        }

        public CollectionView Names { get; private set; }

        private List<string> _namesModel = new List<string>();
    }
}

关于wpf - 如何在组合框中将项目设置为选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860129/

相关文章:

c# - 从 xaml 中清除 dependencyProperty 值

c# - Caliburn.Micro 将 DateTimeOffset 绑定(bind)到 DatePicker

c++ - 来自数据库的 QT ComboBox ItemData

c# - 通过代码将 MergedDictionaries 添加到样式

wpf - 使用 Visual Studio 2012 在 wpf 工具包中找不到 AutoCompleteBox

.net - WPF 的 F# 异步事件处理程序类似于 C# 的 async 和 await

asp.net-mvc - AutoMapper 中是否有办法指定所有被映射的字符串都将被修剪

c# - 基于文本框值的列表框排序

combobox - 表单布局后的EXTJS组合框默认值

c# - 如何在 C# 中搜索组合框的所有项目?