当前位置: 首页 > 知识库问答 >
问题:

将ComboBox的SelectedItem设置为ListCollectionView中项目的值

公冶谦
2023-03-14

我有一个ListCollectionView,它保存了一堆对象场景的条目。场景中的属性之一是位置。

当我浏览列表集合视图时,我想将位置属性的值设置为视图中组合框中的选定项。每次转到 ListCollectionView 中的不同项时,我都希望在组合框中将新位置显示为 SelectedItem。

我知道如何在常规的文本框和文本块中完成这项工作,但不是在组合框中。

视图模型

public ListCollectionView SceneCollectionView { get; set; }
private Scene CurrentScene
{
    get { return SceneCollectionView.CurrentItem as Scene; }
    set
    {
        SceneCollectionView.MoveCurrentTo(value);
        RaisePropertyChanged();
    }
}

查看

<ComboBox  SelectedItem="{Binding SceneCollectionView/Location, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding AllLocations}}"/>

对于文本框,following可以很好地工作,但是对于comboBoxes就不行了

 <TextBox Text="{Binding SceneCollectionView/Location, UpdateSourceTrigger=PropertyChanged}"/>

知道我如何在ComboBox中为SelectedItem获得相同的行为吗。我对用c语言编码还很陌生#

共有1个答案

阎德辉
2023-03-14

如果为ListCollectionView提供的集合中定义的所有位置都存在于 属性中定义的 中,那么代码应该可以工作。

例如,以下代码以及您当前在Xaml中定义的ComboBox按您的预期工作:

Xaml:

<Grid>
    <ComboBox SelectedItem="{Binding SceneCollectionView/Location, UpdateSourceTrigger=PropertyChanged}" 
              ItemsSource="{Binding AllLocations}"/>
    <TextBox Text="{Binding SceneCollectionView/Location, UpdateSourceTrigger=PropertyChanged}"/>
    <Button  Content="SelectNext" Click="Button_Click"/>
</Grid>

代码:

    public ListCollectionView SceneCollectionView { get; set; }
    public List<string> AllLocations { get; set; }
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;

        var scenes = new List<Scene>();
        scenes.Add(new Scene { Location = "location1"});
        scenes.Add(new Scene { Location = "location2"});
        scenes.Add(new Scene { Location = "location3" });
        SceneCollectionView = new ListCollectionView(scenes);

        AllLocations = new List<string> { "location1", "location2", "location3" };
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        SceneCollectionView.MoveCurrentToNext();
    }

在上面的代码中,当您单击该按钮时,ComboBox.SelectedItemTextBox.Text 都会更改为 SceneCollectionView定义的下一个 Item.Location

 类似资料:
  • 我有一个JComboBox,其中的项是查询的结果。组合框显示从查询中获取的所有类别名称,对吗?好的,它起作用了。现在我需要给每个项目一个值,即产品的ID。 这是我目前得到的信息: 正如您在代码中看到的,每个项目的“标签”都是它的名称。现在,如何设置每个项目的ID,以便我可以操作之后?

  • 所以在我的项目中,我只是想让背景文件有一个gif播放,让它看起来更好,但是我找到的每个解决方案都不起作用。我在JLabel上制作gif,然后将所有内容都添加到JLabel上的解决方案不起作用,项目运行了,但是屏幕上没有显示任何内容。我把gif叫做 我的主长这样 我在乞讨中扩展了JPanel。我添加了一堆盒子,这些盒子有一堆JButton 这有可能吗?

  • 我正在使用ScalaPB(版本0.11.1)和插件sbt-pro c(版本1.0.3)尝试在Scala 2.12中使用SchemcolBuffers编译一个旧项目。阅读留档,我想将文件属性设置为。但我的问题是,在哪里?我需要在哪里设置这个标志?在. proto文件上? 我还尝试通过创建包将标志作为包范围的选项。我的另一个旁边的原型文件。原型文件,具有以下内容(如此处所述): 但在尝试编译时,我得到

  • 我想使用节标题实现类似网格的布局。想想 https://github.com/TonicArtos/StickyGridHeaders 我现在所做的: 现在常规项目和标题的跨度大小都为1。如何解决这个问题?

  • 主要包括: 项目信息及项目授权管理的配置。 7.1.1 项目信息 展示在新建项目时,您所填写的项目信息及备注,并且可在此进行修改。 7.1.2 授权管理 授权的主体为用户邮箱账号。 授权管理主要包含 项目的授权,及站点的授权。 分别介绍如下: 分类 授权项 解释 项目权限 无法查看项目用户 被授权账号拥有访问项目的权限,而无法查看项目是否有其他授权用户 项目权限 允许查看项目用户 被授权账号拥有访