【发布时间】:2019-09-04 07:26:55
【问题描述】:
我也在开发带有实体框架的 WPF 应用程序。 但我不使用 MVVM 我有一个 ENUM 类型,所以我需要使用所有枚举类型初始化组合框项目源并根据我的数据选择值。为了简化,只需考虑将简单列表绑定到组合框。我已经厌倦了不同的方式,但有一个我无法弄清楚的问题。
<Page x:Class="Library.View.Reader"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Library.View"
mc:Ignorable="d"
d:DesignHeight="300"
Title="Reader" Width="900">
<Grid Margin="0,0,0,0">
<DataGrid Name="grid_reader" AutoGenerateColumns="True" HorizontalAlignment="Left" Height="126" Margin="23,20,0,0" VerticalAlignment="Top" Width="845" RowEditEnding="grid_reader_RowEditEnding" AutoGeneratingColumn="grid_reader_AutoGeneratingColumn">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Type"
ItemsSource="{DynamicResource enumlist}}"
DisplayMemberPath="Name"
SelectedValuePath="Id"
SelectedValueBinding="{Binding Type}"
</DataGrid.Columns>
</DataGrid>
</Grid>
我已经尝试过 DynamicResource、StaticResource、Binding。它们都不起作用!
public partial class Reader : Page
{
public Reader() // Redaer is my page in xaml
{
LibraryDataAccess.Model1 model = new Model1();
List<LibraryDataAccess.Model.Reader> list = new List<LibraryDataAccess.Model.Reader>();
list = model.Readers.ToList();
public ObservableCollection<ReaderType> enumlist { get; set; }
// initialize datagrid succefully Also enumlist = getEnumValues();
enumlist = new ObservableCollection<ReaderType>();
//enumlist = new List<LibraryDataAccess.EnumTypes.ReaderType>();
typelist = Enum.GetValues(typeof
(LibraryDataAccess.EnumTypes.ReaderType))
.Cast<LibraryDataAccess.EnumTypes.ReaderType>().Select(x => new ReaderType { Id = (int)x, Name = x.ToString() }).ToList();
foreach (var item in typelist)
{
enumlist.Add(item);
}
grid_reader.ItemsSource = list;
}
public class ReaderType
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Combo 中没有加载任何内容。解决办法是什么。谢谢
已编辑:
我 99% 确定问题出在组合 BUT 的 ItemSource 上:
我需要用枚举值填充的组合,并且选定的值显示为给定的值,如 Staff(在 id 为 2 的枚举列表中),无论如何组合都不会被填充。我在单独的 wpf 页面中使用它。
我认为问题出在与组合框相关的数据上下文中,我什至尝试使用分离的组合框,使用上面提到的绑定,但它不起作用。
当我使用 AUTOGENERATED = true 时,组合框会很好地创建并带有选择值。
【问题讨论】:
-
您想将枚举列表绑定到组合框吗?那么你能用你的枚举列表定义来展示你所有的编码吗
-
请查看已编辑和已编辑的代码,非常感谢
-
什么是grid_reader,你的datagrid的名字?
-
是的,它是数据网格
-
只有一段代码很难理解..请用datagrid的定义显示你的xaml代码
标签: c# wpf combobox binding datagrid