繁体   English   中英

对Doubleclick DataGrid显示值WPF应用程序进行故障排除

[英]Troubleshoot doubleclick DataGrid show values wpf application

我有一个有趣的情况,我无法独自解决。 我双击一个dataGrid并让一个消息框显示该行的文本。 不幸的是,我一次只能得到一个牢房???

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" Height="238.968"
    >
<Grid Width="337" >
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <DataGrid x:Name="selectDataGrid" HorizontalAlignment="Left" Width="333" AutoGenerateColumns="False" Margin="0,0,0,117" >
        <DataGrid.Columns>

            <DataGridTextColumn  Header="FIRST NAME" Width="125" Binding="{Binding FNAME}"/>
            <DataGridTextColumn Header="LAST NAME" Width="125" Binding="{Binding LNAME}"/>
        </DataGrid.Columns>
        <DataGrid.RowStyle>
            <Style TargetType="{x:Type DataGridRow}">
                <EventSetter Event="MouseDoubleClick" Handler="selectDataGrid_MouseDoubleClick_1" />
            </Style>
        </DataGrid.RowStyle>
    </DataGrid>
    <TextBox x:Name="tbTest" HorizontalAlignment="Left" Height="23" Margin="147,176,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
    <TextBox x:Name="tbTest2" HorizontalAlignment="Left" Height="23" Margin="10,176,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>

</Grid>

C#:

    private void selectDataGrid_MouseDoubleClick_1(object sender, MouseButtonEventArgs e)
    {
        if (sender != null)
        {
            var row = (DataGridRow)sender;
            TextBlock myTextBlock = selectDataGrid.Columns[0].GetCellContent(selectDataGrid.CurrentItem)  as TextBlock;
            TextBlock myTextBlock1 = selectDataGrid.Columns[1].GetCellContent(selectDataGrid.CurrentItem) as TextBlock;

            System.Windows.MessageBox.Show(myTextBlock.Text);

        }

因此,在此示例中发生了什么:如果单击第二列(姓),则消息框将显示第一列。 如果我将消息框显示更改为“ myTextBlock1”,则通过单击第一列,消息框将显示第二列。 扑朔迷离。 如果我尝试show(myTextBlock.Text + myTextBlock1.Text),则会得到一个异常,指出空对象。 好像我需要同时单击两列一样???

我想分别拥有值,理想情况下,像show(myTextBlock.Text + myTextBlock1.Text)之类的东西会很不错,因为那样的话我可以选择仅显示一个或另一个等等。

我感觉自己很亲密,只是缺少一些明显的东西。 我希望有人可以帮我解决此问题,因为我昨晚整晚都在这里。

更新:如果我按住ctrl并选择行中的两列,然后show(myTextBlock.Text + myTextBlock1.Text)可以工作。 我不确定如何强制其自动选择整行???

希望这可以节省一些时间:

这是我所拥有的:

selectDataGrid.Columns[0].GetCellContent(selectDataGrid.CurrentItem)

这是有效的方法:

selectDataGrid.Columns[0].GetCellContent(selectDataGrid.SelectedItem)

从字面上看,就像将CurrentItem更改为SelectedItem一样简单。 活到老,学到老!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM