【发布时间】:2019-04-06 15:51:46
【问题描述】:
我正在寻找一种使用 XML 文件中的值填充数据网格组合框的方法。 我绑定到枚举的组合框。 传递字符串值不起作用。
我尝试了不同的选项来声明我的枚举和字符串,但这不是解决方案。
我有一个这样的 XML 文件。
xml
<?xml version="1.0"?>
<UserInfo>
<Users>
<User Name="Donald Duck" Hair="0" />
<User Name="Mimmi Mouse" Hair="3" />
<User Name="Goofy" Hair="2" />
</Users>
</UserInfo>
xaml
<Window.Resources>
<ObjectDataProvider x:Key="HairColor" MethodName="GetValues"
ObjectType="{x:Type core:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type Type="local:HairColor"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
...
<Grid Margin="10">
<DataGrid Name="dgUsers" AutoGenerateColumns="False" Margin="227,0,-227,0">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
<DataGridComboBoxColumn Header="Hair Color" SelectedItemBinding="{Binding Color}" ItemsSource="{Binding Source={StaticResource HairColor}}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
c#
public partial class MainWindow : Window
{
private ObservableCollection<User> users = new ObservableCollection<User>();
public MainWindow()
{
InitializeComponent();
List<User> users = new List<User>();
users.Add(new User() { Name = "Donald Duck", Color = "White" });
users.Add(new User() { FirstName = "Mimmi Mouse", Color = "Red" });
users.Add(new User() { FirstName = "Goofy", Color = "Brown" });
dgUsers.ItemsSource = users;
}
//Defines the customer object
public class User
{
public string Name { get; set; }
public string Color { get; set; }
}
public enum HairColor { White, Black, Brown, Red, Yellow };
运行时颜色不显示。 我希望能够使用组合进行选择,但它应该从值是数字的 xml 文件中填充。 此外,如何从组合框(数字)中获取值?
【问题讨论】:
-
你能检查一下我是否明白你想要什么......你有一个带有用户和头发编号的 xml,并且你想显示一个组合框,其中包含从 xml 文件中选择的所有头发颜色名称选项对于用户..这对于所有记录?
-
是的,没错。我现在手动添加记录,但最后我将使用输入文件。
-
我设法解决了这个问题。除了大量的转换之外,这是主要的工作解决方案:``` C# HairColor enCol; Enum.TryParse(索引字符串 - 说“2”,出 enCol); ... ``` 对于读取绑定到用户字段的 DataGrid,这非常有效。 ``` C# // 循环遍历 DataGrid 中的用户。用户我们 = null; for (int i = 0; i
-
不要忘记通过验证正确的答案来结束您的问题,这是对帮助者表示感谢的方式所以
标签: c# combobox wpfdatagrid