C# 绑定WPF DataGridComboxC列4时出现问题
我已经找了4个小时了,所以如果答案在这里,我很抱歉。 无论如何下面是: 我有一个DataGrid,正在尝试实现一个DatGridComboxColumn。 我已经设法让它提供正确的数据。但是,当我进行选择时,它不仅会更改选定的列,还会更改主表中的另一列 具体而言: 我的组表如下所示: 身份证,姓名 1、A 2,B 3,C 如果在DataGridComboBoxColumn中选择A,则会将Schedules数据源中的GroupId字段更改为正确的值1。 但是-它还将Schedules数据源中的Name字段更改为A。 我已经尝试了70种不同的组合来设置东西。 将明细表中的名称字段重命名为其他名称(如ScheduleName)的唯一方法。这是WPF中的某种错误,还是我没有编写正确的代码 任何帮助都将不胜感激! 奥森 以下是页面代码:C# 绑定WPF DataGridComboxC列4时出现问题,c#,wpf,datagridcomboboxcolumn,C#,Wpf,Datagridcomboboxcolumn,我已经找了4个小时了,所以如果答案在这里,我很抱歉。 无论如何下面是: 我有一个DataGrid,正在尝试实现一个DatGridComboxColumn。 我已经设法让它提供正确的数据。但是,当我进行选择时,它不仅会更改选定的列,还会更改主表中的另一列 具体而言: 我的组表如下所示: 身份证,姓名 1、A 2,B 3,C 如果在DataGridComboBoxColumn中选择A,则会将Schedules数据源中的GroupId字段更改为正确的值1。 但是-它还将Schedules数据源中的Na
<Page x:Class="Bix.SchedulesMainPage"
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"
mc:Ignorable="d"
d:DesignHeight="565" d:DesignWidth="775"
Title="SchedulesMainPage" xmlns:my="clr-namespace:Bix">
<Page.Resources>
<ObjectDataProvider x:Key="ScheduleDataProvider" ObjectType="{x:Type my:ScheduleDataProvider}"/>
<ObjectDataProvider x:Key="Schedules"
ObjectInstance="{StaticResource ScheduleDataProvider}"
MethodName="GetSchedules"/>
<ObjectDataProvider x:Key="GroupDataProvider" ObjectType="{x:Type my:GroupDataProvider}"/>
<ObjectDataProvider x:Key="Groups"
ObjectInstance="{StaticResource GroupDataProvider}"
MethodName="GetGroups"/>
<ObjectDataProvider x:Key="ReportDataProvider" ObjectType="{x:Type my:ReportDataProvider}"/>
<ObjectDataProvider x:Key="Reports"
ObjectInstance="{StaticResource ReportDataProvider}"
MethodName="GetReports"/>
</Page.Resources>
<Grid>
<Label Content="Schedules" FontSize="32" FontWeight="Bold" Foreground="#FF5A5A5A" Height="52" HorizontalAlignment="Left" Margin="10,10,0,0" Name="label1" VerticalAlignment="Top" Width="719" />
<DataGrid AutoGenerateColumns="False" DataContext="{Binding Source={StaticResource Schedules}}" Height="224" HorizontalAlignment="Left" HorizontalGridLinesBrush="#FFCBCBCB" ItemsSource="{Binding}" Margin="12,68,0,0" Name="dgrdContacts" VerticalAlignment="Top" VerticalGridLinesBrush="#FFCBCBCB" Width="751">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" Width="120" />
<DataGridComboBoxColumn Header="Contact Group"
SelectedValueBinding="{Binding Path=GroupId}" DisplayMemberPath="Name" SelectedValuePath="Id" ItemsSource="{Binding Source={StaticResource Groups}}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Source={StaticResource Groups}}" />
<Setter Property="Text" Value="{Binding Name}" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Source={StaticResource Groups}}" />
<Setter Property="Text" Value="{Binding Name}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
<DataGridTextColumn Binding="{Binding Path=Interval}" Header="Send Every" Width="120" />
<DataGridTextColumn Binding="{Binding Path=IntervalUnit}" Header="Time Unit" Width="120" />
<DataGridTextColumn Binding="{Binding Path=LastSend}" Header="Last Sent" Width="*" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Page>
您正在将ComboBox的Text属性绑定到数据源中基础行的Name属性。查看代码,我认为没有必要使用EditingElementStyle和ElementStyle,因为您已经在它之外设置了相关属性。谢谢。方向正确!正确的属性名称为:DisplayMemberPath和SelectedValuePath。现在它工作了!