将组合框项目源绑定到那些对象的某些属性

狗狗

说我有一个具有name和id属性的TeamParameter对象的列表。我想要一个组合框,该组合框将显示TeamParameter对象的列表,但仅向用户显示组合框中的每个nameName属性。有没有办法绑定到MainWindow.xaml中的该属性?

尝试使用点表示法,但认为不会奏效。

MainViewModel.cs

public class MainViewModel : ViewModelBase
{
        private List<TeamParameters> _teams;

        public class TeamParameters
        {
            public string Name { get; set; }

            public int Id { get; set; }
        }

        public List<TeamParameters> Teams
        {
            get { return _teams; }
            set { Set(ref _teams, value); }
        }
}

MainWindow.xaml

<Window x:Class="LiveGameApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:LiveGameApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800"
        DataContext="{Binding Main, Source={StaticResource Locator}}">



    <DockPanel>
        <ComboBox  Name="TeamChoices" ItemsSource="{Binding Team.Name}"  DockPanel.Dock="Top" Height="30" Width="175" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"></ComboBox>
    </DockPanel>
</Window>
仿生代码

要指向数据模型上的特定属性,可以通过设置来指定成员路径DisplayMemberPath

<ComboBox  ItemsSource="{Binding Teams}" DisplayMemberPath="Name" />

如果您没有为的项目提供DataTemplate且未指定,则控件默认会显示该项目的表示形式。这是通过调用每个项目来完成的因此,作为一种替代你总是可以覆盖的的类型(或一般项目模型):DisplayMemberPathItemsControlstringObject.ToString()Object.ToString()TeamParameters

public class TeamParameters
{
  public override string ToString() => this.Name;

  public string Name { get; set; }

  public int Id { get; set; }
}

XAML

<ComboBox  ItemsSource="{Binding Teams}" />

或简单地提供DataTemplate

<ComboBox ItemsSource="{Binding Teams}">
    <ComboBox.ItemTemplate>
        <DataTemplate DataType="TeamParameters">
            <TextBlock Text="{Binding Name}" /> 
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将属性值绑定到组合框

来自分类Dev

将组合框元素绑定到数据源

来自分类Dev

将组合框元素绑定到数据源

来自分类Dev

将组合框项目绑定到枚举字典

来自分类Dev

将文本绑定到组合框中的所选项目

来自分类Dev

将每个对象的某些变量显示到组合框中

来自分类Dev

将组合框从主窗口资源属性绑定到itemsource

来自分类Dev

将 WPF 组合框绑定到用户设置属性

来自分类Dev

WPF将组合框绑定到业务对象的数组/列表

来自分类Dev

UWP组合框绑定到SelectedItem属性

来自分类Dev

将记录添加到绑定到数据源的组合框

来自分类Dev

如何使用嵌套字典作为源将文本块绑定到组合框

来自分类Dev

WPF将字典绑定到组合框

来自分类Dev

将List <KeyValuePair>绑定到组合框

来自分类Dev

将资源字典绑定到组合框

来自分类Dev

将查询结果绑定到组合框

来自分类Dev

将列表从类绑定到组合框

来自分类Dev

将对象的某些属性绑定到数据

来自分类Dev

将组合绑定到本地枚举属性

来自分类Dev

如何将组合框数据源绑定到Windows窗体中的窗体/列表框?

来自分类Dev

将组合框数据源设置为列表中存储的对象的特定属性

来自分类Dev

将组合框项目绑定到字符串资源数组

来自分类Dev

如何将组合框类别项目绑定到它的categoryId

来自分类Dev

试图将datagrid项目源绑定到另一个类中的属性

来自分类Dev

无法将属性作为枚举绑定到 wpf mvvm 中的组合框

来自分类Dev

将文本框绑定到属性

来自分类Dev

将文本框绑定到属性

来自分类Dev

WPF:如何将对象绑定到组合框

来自分类Dev

将knockoutjs 绑定到javascript 对象属性