【发布时间】:2015-11-10 03:56:42
【问题描述】:
我有一个 WPF 应用程序,并使用 SQL 查询中的值填充了一个 DataGrid。我在窗口中添加了一个 DataGridCheckBoxColumn 和按钮。单击按钮时,我想从第一个选定行中获取数据并插入文本框或存储为变量。请以不熟悉 c# 开发的人能够理解的方式解释答案,以便我可以学习而不是复制和粘贴。
这是我的 XAML:
<Window x:Class="WpfApplication7.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="NAME SELECT"
SizeToContent="WidthAndHeight"
>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<DataGrid x:Name="selectDataGrid" HorizontalAlignment="Left" VerticalAlignment="Top" Height="92" Width="288" AutoGenerateColumns="False">
<Style TargetType="{x:Type DataGridRow}" >
</Style>
<DataGrid.Columns>
<DataGridCheckBoxColumn x:Name="dgCheckBox" Header="Select" Width="45" Binding="{Binding IsChecked}"/>
<DataGridTextColumn Header="FIRST NAME" Width="125" Binding="{Binding FNAME}"/>
<DataGridTextColumn Header="LAST NAME" Width="125" Binding="{Binding LNAME}"/>
</DataGrid.Columns>
</DataGrid>
<Button Content="Update Fields" HorizontalAlignment="Left" Margin="193,97,0,0" VerticalAlignment="Top" Width="95" Click="Button_Click"/>
</Grid>
下面是我的 c#:
private void Button_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < selectDataGrid.Items.Count -1; i++)
{
DataGridRow cell = GetRow(i);
CheckBox tb = cell.value as CheckBox;
System.Windows.MessageBox.Show(tb.IsChecked.ToString());
}
}
public DataGridRow GetRow(int index)
{
DataGridRow row = (DataGridRow)selectDataGrid.ItemContainerGenerator.ContainerFromIndex(index);
if (row == null)
{
selectDataGrid.UpdateLayout();
selectDataGrid.ScrollIntoView(selectDataGrid.Items[index]);
row = (DataGridRow)selectDataGrid.ItemContainerGenerator.ContainerFromIndex(index);
}
return row;
}
如果我能获得帮助,将所选结果显示到消息框,我可以从那里开始。我只对选定行的第一个实例感兴趣。因此,如果选择了多行,我只对选择的第一行感兴趣。
我已经阅读了包含我的关键字的任何内容的所有解决方案,但我找不到任何符合我只想要第一行的特定需求的内容。我没有足够的经验来进行跳跃或更改代码以使其他东西为我工作。如果您要将我链接到另一个解决方案,请解释我需要对我的代码进行哪些更改,或者我需要从解决方案中获得哪些部分。理想情况下,解决方案中的工作代码是最好的。
【问题讨论】:
-
首先,您可以将 DataGrid 配置为只允许单行选择,不是吗?
-
@user3486773 您好,在按钮单击处理程序中使用代码的工作解决方案对您有好处吗?