【问题标题】:Datagrid get hidden cell from sellected rowDatagrid从选定行中获取隐藏单元格
【发布时间】:2013-06-30 21:09:44
【问题描述】:

您好,我在访问选定DataGrid 中的隐藏值时遇到问题Row

<DataGrid Name="grid" ItemsSource ="{Binding}" IsReadOnly="True" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Id_user" Binding="{Binding id_user}" Visibility="Hidden"/>
        <DataGridTextColumn Header="A" Binding="{Binding A}" />
        <DataGridTextColumn Header="B" Binding="{Binding B}" />
    </DataGrid.Columns>

    <DataGrid.ItemContainerStyle>
        <Style TargetType="DataGridRow">
            <EventSetter Event="MouseDoubleClick" Handler="selectRow"/>
        </Style>
    </DataGrid.ItemContainerStyle>
</DataGrid>

这是我用来执行此操作的代码,但我发现该元素不存在。

private void selectRow(object sender, RoutedEventArgs e)
{
    DataRowView row = (DataRowView)grid.SelectedItems[0];
    var x = row["Id_user"];
    this.NavigationService.Navigate(new PageA((string)x));
}

有没有简单的方法来做到这一点?

编辑:

row["ID"] 不是SelectedItem.id。这是不同的

【问题讨论】:

    标签: c# wpf .net-4.0 wpfdatagrid


    【解决方案1】:

    您应该将此逻辑移至视图模型。后面代码中的事件处理程序应如下所示:

    private void selectRow(object sender,RoutedEventArgs  e) 
    {
        ViewModel.Navigate();
    }
    

    这里是Navigate() 实现:

    public void Navigate()
    {
        NavigationService.Navigate(new PageA(SelectedItem.id_user));
    }
    

    剩下要做的就是将视图模型上的SelectedItem 属性绑定到您的DataGrid

    <DataGrid Name="grid" SelectedItem="{Binding SelectedItem}" ItemsSource ="{Binding Collection}"  IsReadOnly="True" AutoGenerateColumns="False" >
    

    【讨论】:

    • SelectedItem.id != row["ID"]
    • 我知道我应该在开头写这个是不同的:/
    • 不,这是来自var x = row["Id"]; 的ID,其中row 是您选择的项目。请编辑你的代码,如果不是这样的话。
    • 好的,我编辑了。现在应该不会误认为 SelectedItem.id。
    • 但是如何将 SelectedItem 绑定到选定的行?我是 xaml 的新手,我需要数周时间才能找到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2016-11-22
    • 2014-07-21
    • 1970-01-01
    • 2011-04-24
    • 2018-02-07
    相关资源
    最近更新 更多