C# WPF&x2B;获取datagridview的值
以下是我的wpf xml datagridview:C# WPF&x2B;获取datagridview的值,c#,wpf,datagridview,C#,Wpf,Datagridview,以下是我的wpf xml datagridview: <DataTemplate x:Key="CustomLimitationTemplate"> <StackPanel> <ComboBox> <ComboBoxItem>Aucune</ComboBoxItem> <ComboBoxItem>Légère</ComboBoxItem>
<DataTemplate x:Key="CustomLimitationTemplate">
<StackPanel>
<ComboBox>
<ComboBoxItem>Aucune</ComboBoxItem>
<ComboBoxItem>Légère</ComboBoxItem>
<ComboBoxItem>Modérée</ComboBoxItem>
<ComboBoxItem>Forte</ComboBoxItem>
<ComboBoxItem>Totale</ComboBoxItem>
</ComboBox>
</StackPanel>
</DataTemplate>
<DataGrid AutoGenerateColumns="False" VerticalAlignment="Stretch" Grid.Row="2" Name="dg1" RowDetailsVisibilityMode="Collapsed" ItemsSource="{Binding Source={StaticResource XmlData},XPath=Limits/*}">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" x:Name="IdColumn" Binding="{Binding XPath=Id}" />
<DataGridTemplateColumn Header="Capacite" CellTemplate="{StaticResource CustomCapacityTemplate}" Width="480" />
<DataGridTemplateColumn Header="Limitation" x:Name="LimitationColumn" CellTemplate="{StaticResource CustomLimitationTemplate}" Width="150" />
<DataGridTemplateColumn Header="Aide" CellTemplate="{StaticResource CustomDetailTemplate}" Width="97" />
</DataGrid.Columns>
</DataGrid>
不能使用datarow访问wpf中的datagrid组合框值。 您可以通过以下代码获取任意选定列的名称 添加以下xaml视图 数据网格
<DataGrid x:Name="dgTest" HorizontalAlignment="Left" AutoGenerateColumns="False" Margin="37,152,0,0" VerticalAlignment="Top" Height="126" Width="440" ItemsSource="{Binding XPath=data/Limits}" SelectionChanged="dgTest_SelectionChanged">
<DataGrid.Resources>
<DataTemplate x:Key="CustomDetailTemplate">
<StackPanel>
<ComboBox SelectionChanged="ComboBox_SelectionChanged_1" Loaded="ComboBox_Loaded_2" >
<ComboBoxItem>Aucune</ComboBoxItem>
<ComboBoxItem>Légère</ComboBoxItem>
<ComboBoxItem>Modérée</ComboBoxItem>
<ComboBoxItem>Forte</ComboBoxItem>
<ComboBoxItem>Totale</ComboBoxItem>
</ComboBox>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CustomLimitationTemplate">
<StackPanel>
<ComboBox SelectionChanged="ComboBox_SelectionChanged_2" Loaded="ComboBox_Loaded_1" >
<ComboBoxItem>01</ComboBoxItem>
<ComboBoxItem>02</ComboBoxItem>
<ComboBoxItem>03</ComboBoxItem>
<ComboBoxItem>04</ComboBoxItem>
<ComboBoxItem>05</ComboBoxItem>
</ComboBox>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CustomCapacityTemplate">
<StackPanel>
<ComboBox Loaded="ComboBox_Loaded_3" >
<ComboBoxItem>11</ComboBoxItem>
<ComboBoxItem>12</ComboBoxItem>
<ComboBoxItem>13</ComboBoxItem>
<ComboBoxItem>14</ComboBoxItem>
<ComboBoxItem>15</ComboBoxItem>
</ComboBox>
</StackPanel>
</DataTemplate>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" x:Name="IdColumn" Binding="{Binding XPath=Id}" />
<DataGridTemplateColumn Header="Capacite" CellTemplate="{StaticResource CustomCapacityTemplate}" Width="100" />
<DataGridTemplateColumn Header="Limitation" x:Name="LimitationColumn" CellTemplate="{StaticResource CustomLimitationTemplate}" Width="150" />
<DataGridTemplateColumn Header="Aide" CellTemplate="{StaticResource CustomDetailTemplate}" Width="97" />
</DataGrid.Columns>
</DataGrid>
现在,将以下代码添加到组合框的加载事件中
private void ComboBox_Loaded_1(object sender, RoutedEventArgs e)
{
cmb01 = (sender as ComboBox);
cmb01.SelectedIndex = 0;
}
private void ComboBox_Loaded_2(object sender, RoutedEventArgs e)
{
cmb02 = (sender as ComboBox);
cmb02.SelectedIndex = 0;
}
private void ComboBox_Loaded_3(object sender, RoutedEventArgs e)
{
cmb03 = (sender as ComboBox);
cmb03.SelectedIndex = 0;
}
最后,将以下代码添加到datagrid selected changed事件
private void dgTest_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cmb01 != null && cmb02 != null && cmb03 !=null)
{
cmb1 = cmb01.SelectionBoxItem.ToString();
cmb2 = cmb02.SelectionBoxItem.ToString();
cmb3 = cmb03.SelectionBoxItem.ToString();
MessageBox.Show(cmb1 + cmb2+cmb3);
}
}
在这里,我使用messagebox进行显示。您可以按照自己的方式处理输出
希望此答案对您有所帮助。您遇到的运行时错误是什么?严重性代码描述项目文件行错误CS1061“DataGrid”不包含“SelectedRows”的定义,并且找不到接受“DataGrid”类型第一个参数的扩展方法“SelectedRows”(是否缺少using指令或程序集引用?)错误CS1503参数1:无法从'System.Windows.Controls.DataGridTextColumn'转换为'int'错误CS1503参数1:无法从'System.Windows.Controls.DataGridTemplateColumn'转换为'int'因此存在编译时异常?您好,谢谢您的回答。帮助不大是的,但我不知道如何通过数据网格上的for获取所有行?@希望下面的链接能帮助你
ComboBox cmb02;
ComboBox cmb01;
ComboBox cmb03;
string cmb1, cmb2,cmb3;
private void ComboBox_Loaded_1(object sender, RoutedEventArgs e)
{
cmb01 = (sender as ComboBox);
cmb01.SelectedIndex = 0;
}
private void ComboBox_Loaded_2(object sender, RoutedEventArgs e)
{
cmb02 = (sender as ComboBox);
cmb02.SelectedIndex = 0;
}
private void ComboBox_Loaded_3(object sender, RoutedEventArgs e)
{
cmb03 = (sender as ComboBox);
cmb03.SelectedIndex = 0;
}
private void dgTest_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cmb01 != null && cmb02 != null && cmb03 !=null)
{
cmb1 = cmb01.SelectionBoxItem.ToString();
cmb2 = cmb02.SelectionBoxItem.ToString();
cmb3 = cmb03.SelectionBoxItem.ToString();
MessageBox.Show(cmb1 + cmb2+cmb3);
}
}