WPF+获取datagridview的值
本文关键字:的值 datagridview 获取 WPF+ | 更新日期: 2023-09-27 18:20:29
这是我的wpf-xml数据网格视图:
<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>
我想获得所有的第一个(ID)和第三个(Limit,DataTemplate Combobox)值,但我所有的foreach和for循环都失败了。示例:
foreach (DataRow row in dg1.SelectedRows)
{
var id = row[IdColumn].ToString();
var limitations = row[LimitationColumn].ToString();
}
您不能使用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>
xml定义
<Window.DataContext>
<XmlDataProvider x:Name="TestData" Source="test.xml"/>
</Window.DataContext>
现在,全局声明以下实例和变量。
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);
}
}
在这里,我使用消息框来显示目的。您可以按照自己想要的方式处理输出。
希望这个答案对你有帮助。