C# Syncfusion SfDataGrid数据绑定问题&;DataGrid列中的唯一值
我在数据绑定到SfDataGrid时遇到问题。我正在为我的简单项目使用MVVM体系结构。下面是我的简化项目(省略了一些代码): 型号:C# Syncfusion SfDataGrid数据绑定问题&;DataGrid列中的唯一值,c#,wpf,data-binding,syncfusion,datagridcomboboxcolumn,C#,Wpf,Data Binding,Syncfusion,Datagridcomboboxcolumn,我在数据绑定到SfDataGrid时遇到问题。我正在为我的简单项目使用MVVM体系结构。下面是我的简化项目(省略了一些代码): 型号: public class Combo : INotifyPropertyChanged { private string name; public ObservableCollection<LoadCase> LoadCases { get; set; } #region getters and setters p
public class Combo : INotifyPropertyChanged
{
private string name;
public ObservableCollection<LoadCase> LoadCases { get; set; }
#region getters and setters
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Combo(....)
{
....
}
.....
}
<Syncfusion:SfDataGrid x:Name="ComboInfoDG" Grid.ColumnSpan="3" AutoGenerateColumns="False" Margin="10,10,10,10" Grid.Row="3" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding ObjCombo.LoadCases}" AllowEditing="True" EditTrigger="OnTap">
<Syncfusion:SfDataGrid.Columns>
<Syncfusion:GridComboBoxColumn x:Name="Comboboxcolumn" HeaderText="Load Name"
ItemsSource="{Binding DataContext.CombosAndLoadCasesList, ElementName=ComboInfoDG}"
DisplayMemberPath="{Binding Name}"
MappingName="Name"/>
<Syncfusion:GridTextColumn HeaderText="Load factor"
MappingName="SF"/>
</Syncfusion:SfDataGrid.Columns>
</Syncfusion:SfDataGrid>
Combo.cs:
public class Combo : INotifyPropertyChanged
{
private string name;
public ObservableCollection<LoadCase> LoadCases { get; set; }
#region getters and setters
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Combo(....)
{
....
}
.....
}
<Syncfusion:SfDataGrid x:Name="ComboInfoDG" Grid.ColumnSpan="3" AutoGenerateColumns="False" Margin="10,10,10,10" Grid.Row="3" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding ObjCombo.LoadCases}" AllowEditing="True" EditTrigger="OnTap">
<Syncfusion:SfDataGrid.Columns>
<Syncfusion:GridComboBoxColumn x:Name="Comboboxcolumn" HeaderText="Load Name"
ItemsSource="{Binding DataContext.CombosAndLoadCasesList, ElementName=ComboInfoDG}"
DisplayMemberPath="{Binding Name}"
MappingName="Name"/>
<Syncfusion:GridTextColumn HeaderText="Load factor"
MappingName="SF"/>
</Syncfusion:SfDataGrid.Columns>
</Syncfusion:SfDataGrid>
ViewModel(我有两个视图共享同一视图模型):
public class Combo : INotifyPropertyChanged
{
private string name;
public ObservableCollection<LoadCase> LoadCases { get; set; }
#region getters and setters
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Combo(....)
{
....
}
.....
}
<Syncfusion:SfDataGrid x:Name="ComboInfoDG" Grid.ColumnSpan="3" AutoGenerateColumns="False" Margin="10,10,10,10" Grid.Row="3" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding ObjCombo.LoadCases}" AllowEditing="True" EditTrigger="OnTap">
<Syncfusion:SfDataGrid.Columns>
<Syncfusion:GridComboBoxColumn x:Name="Comboboxcolumn" HeaderText="Load Name"
ItemsSource="{Binding DataContext.CombosAndLoadCasesList, ElementName=ComboInfoDG}"
DisplayMemberPath="{Binding Name}"
MappingName="Name"/>
<Syncfusion:GridTextColumn HeaderText="Load factor"
MappingName="SF"/>
</Syncfusion:SfDataGrid.Columns>
</Syncfusion:SfDataGrid>
MainWindowViewModel.cs
public class LoadCase : INotifyPropertyChanged
{
private string name;
private double sf;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public double SF
{
get
{
return sf;
}
set
{
sf = value;
}
}
public LoadCase(....)
{
....
}
....
}
public class MainWindowViewModel : INotifyPropertyChanged
{
public Combo ObjCombo
{
get; set;
}
private ObservableCollection<object> combosandloadcasesList;
public ObservableCollection<object> CombosAndLoadCasesList
{
get { return combosandloadcasesList; }
set { combosandloadcasesList = value; }
}
public MainWindowViewModel()
{
....
}
...
}
我正在尝试添加一个将绑定到ObjCombo.LoadCases的SfDataGrid。那部分有效。然后我添加了两列;一个组合框和一个文本框。我的问题是组合框。组合框应绑定到ObjCombo.LoadCases Name属性,下拉列表应包含ComboAndLoadCaseSList中的对象。文本列工作正常,并绑定到ObjCombo.LoadCases SF属性。然而,我的组合框部分工作。它显示绑定到ComboandLoadCaseSList的对象,但下拉列表显示的是对象的类型,而不是对象的名称。我不确定DisplayMemeberPath为什么不工作
ChildView中的xaml:
public class Combo : INotifyPropertyChanged
{
private string name;
public ObservableCollection<LoadCase> LoadCases { get; set; }
#region getters and setters
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public Combo(....)
{
....
}
.....
}
<Syncfusion:SfDataGrid x:Name="ComboInfoDG" Grid.ColumnSpan="3" AutoGenerateColumns="False" Margin="10,10,10,10" Grid.Row="3" Grid.Column="0"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding ObjCombo.LoadCases}" AllowEditing="True" EditTrigger="OnTap">
<Syncfusion:SfDataGrid.Columns>
<Syncfusion:GridComboBoxColumn x:Name="Comboboxcolumn" HeaderText="Load Name"
ItemsSource="{Binding DataContext.CombosAndLoadCasesList, ElementName=ComboInfoDG}"
DisplayMemberPath="{Binding Name}"
MappingName="Name"/>
<Syncfusion:GridTextColumn HeaderText="Load factor"
MappingName="SF"/>
</Syncfusion:SfDataGrid.Columns>
</Syncfusion:SfDataGrid>
以下是调试器向我展示的内容:
- 错误1 null无法将“”从类型“”转换为具有默认转换的“en-US”区域性的类型“System.Uri”;考虑使用转换器的绑定属性。NotSupportedException:'System.NotSupportedException:UriTypeConverter无法从(null)转换
- 错误1在MainWindowViewModel类型的对象上找不到MainWindowViewModel名称GridComboBoxColumn.DisplayMemberPath字符串名称属性
- 错误2在GridComboBoxColumn类型的对象上找不到GridComboxColumn名称GridComboxColumn.DisplayMemberPath字符串名称属性
- 错误2 SfDataGrid,Name='ComboInfoDG'DataContext.CombosAndLoadCasesList GridComboBoxColumn.ItemsSource IEnumerable找不到目标元素的治理FrameworkElement或FrameworkContentElement
- 错误1 MainWindowViewModel Name GridComboBoxColumn.DisplayMemberPath字符串找不到目标元素的治理FrameworkElement或FrameworkContentElement
- 错误1 GridComboBoxColumn名称GridComboxColumn.DisplayMemberPath字符串找不到目标元素的治理FrameworkElement或FrameworkContentElement