WPF - 将组合框绑定到自定义类对象列表
本文关键字:自定义 对象 列表 绑定 组合 WPF | 更新日期: 2023-09-27 18:36:31
我有一个带有组合框的 WPF 项目,我正在尝试将其绑定到ComboboxItem
对象列表。 ComboboxItem
是我为示例项目创建的类。 这是部分工作... 我有三个项目可用于组合框,但显示的值为空,combobox.SelectedValue
的值为空。 我已经看过几篇关于如何做到这一点的stackoverflow文章和其他博客文章。 据我所知,我做对了。 但显然我做错了什么。 下面是一个测试项目的源代码...
XAML:
<Window x:Class="WpfTestApp_ComboBoxes.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<ComboBox x:Name="cboMyCombo" Grid.Row="0"
SelectionChanged="cboMyCombo_SelectionChanged"></ComboBox>
</Grid>
</Window>
C# 代码隐藏:
public partial class MainWindow : Window
{
List<ComboboxItem> _list = new List<ComboboxItem>();
public MainWindow()
{
_list.Add(new ComboboxItem() { DisplayValue = "One", InternalValue = "1" });
_list.Add(new ComboboxItem() { DisplayValue = "Two", InternalValue = "2" });
_list.Add(new ComboboxItem() { DisplayValue = "Three", InternalValue = "3" });
InitializeComponent();
}
private void cboMyCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0)
{
ComboBox cb = sender as ComboBox;
MessageBox.Show(string.Format("Selected Item: {0}, Selected Value: {1}", cb.SelectedItem, cb.SelectedValue));
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
cboMyCombo.ItemsSource = _list;
cboMyCombo.DisplayMemberPath = "DisplayValue";
cboMyCombo.SelectedValuePath = "InternalValue";
}
}
组合框项类:
public class ComboboxItem
{
public string DisplayValue;
public string InternalValue;
}
更改
public class ComboboxItem
{
public string DisplayValue;
public string InternalValue;
}
自
public class ComboboxItem
{
public string DisplayValue {get;set;}
public string InternalValue {get;set;}
}