【问题标题】:Why can't I select cells in my WPF datagrid?为什么我不能在我的 WPF 数据网格中选择单元格?
【发布时间】:2015-08-21 05:39:13
【问题描述】:

我有一个如下所示的 WPF 数据网格:

<DataGrid x:Name="dataGridOrderItems" Margin="369,0,4,51" VerticalAlignment="Bottom" Height="405" Grid.Row="1"
    VerticalGridLinesBrush="LightGray"  HorizontalGridLinesBrush="LightGray" AlternatingRowBackground="Beige"  AlternationCount="2" SelectionMode="Single" 
    SelectionChanged="dataGridOutstandingOrders_SelectionChanged" AutoGenerateColumns="False" IsReadOnly="True" Grid.ColumnSpan="2">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Resource Name" Binding="{Binding ResourceName}" />
        <DataGridTextColumn Header="Quantity Ordered" Binding="{Binding Quantity}" />
        <DataGridTextColumn Header="Order Date" Binding="{Binding OrderDate, StringFormat=\{0:d\}}" />
        <DataGridCheckBoxColumn Header="Dispatched Resource" Binding="{Binding IsChecked}" />
        <DataGridTextColumn/>
    </DataGrid.Columns>
</DataGrid>

即使启用了数据网格并且我指定了选择模式,我也无法单击任何单元格。我还缺少什么?

如果相关,这里是窗口的完整 XAML:

<Window x:Class="OrderProcessor.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:OrderProcessor"
        mc:Ignorable="d"
        Title="Order Processing" Height="727.625" Width="1088" Icon="1438333970_Delivery.ico">
    <Grid Margin="0,0,2,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="9*"/>
            <ColumnDefinition Width="14*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="94*"/>
            <RowDefinition Height="315*"/>
        </Grid.RowDefinitions>
        <Button x:Name="buttonRefreshOrders" Content="Load/Refresh Orders List" Margin="0,36,10,0" RenderTransformOrigin="-0.72,-2.65" ToolTip="Click to refresh the orders list with the latest orders from SharePoint" Grid.Column="1" HorizontalAlignment="Right" Width="140" Height="36" VerticalAlignment="Top" Click="buttonRefreshOrders_Click"/>
        <DataGrid x:Name="dataGridOutstandingOrders" Margin="11,7,156,470" RenderTransformOrigin="0.5,0.5" Grid.RowSpan="2" Grid.ColumnSpan="2" VerticalGridLinesBrush="LightGray"  HorizontalGridLinesBrush="LightGray" AlternatingRowBackground="Beige"  AlternationCount="2" SelectionMode="Single" SelectionUnit="FullRow" SelectionChanged="dataGridOutstandingOrders_SelectionChanged" AutoGenerateColumns="False" IsReadOnly="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Persona" Binding="{Binding Persona }" />
                <DataGridTextColumn Header="Customer Name" Binding="{Binding CustomerName }" />
                <DataGridTextColumn Header="Organization" Binding="{Binding Organization }" />
                <DataGridTextColumn Header="E-mail" Binding="{Binding Email }" />
                <DataGridTextColumn Header="Phone" Binding="{Binding PhoneNumber }" />
                <DataGridTextColumn Header="Street" Binding="{Binding Street }" />
                <DataGridTextColumn Header="Suburb" Binding="{Binding Suburb }" />
                <DataGridTextColumn Header="Postcode" Binding="{Binding Postcode }" />
                <DataGridTextColumn Header="Order Date" Binding="{Binding OrderDate , StringFormat={}{0:d}}" />

            </DataGrid.Columns>
        </DataGrid>
        <Button x:Name="button_Dispatch_Current_Item" Content="Set selected resources to be dispatched" Margin="0,0,10,10" RenderTransformOrigin="-0.72,-2.65" ToolTip="" HorizontalAlignment="Right" Width="462" Grid.Row="1" Grid.Column="1" Height="36" VerticalAlignment="Bottom"/>
        <GroupBox x:Name="groupBoxCustomerDetails" Header="Customer Details" Margin="11,0,0,10" Grid.Row="1"
                  Grid.Column="0" VerticalAlignment="Bottom" Height="455" HorizontalAlignment="Left" Width="353">
            <StackPanel>
                <Label x:Name="labelCustomerName" Content="" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="16" FontWeight="Bold"/>
                <Label x:Name="labelCustomerOrganization" Content="" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="16" />
                <Label x:Name="labelCustomerStreet" Content="" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="16" />
                <Label x:Name="labelCustomerSuburb" Content="" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="16" />
                <Label x:Name="labelCustomerPostcode" Content="" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="16" />
            </StackPanel>
        </GroupBox>
        <DataGrid x:Name="dataGridOrderItems" Margin="369,0,4,51" VerticalAlignment="Bottom" Height="405" RenderTransformOrigin="0.5,0.5" Grid.Row="1"
            VerticalGridLinesBrush="LightGray"  HorizontalGridLinesBrush="LightGray" AlternatingRowBackground="Beige"  AlternationCount="2" SelectionMode="Single" 
            SelectionChanged="dataGridOutstandingOrders_SelectionChanged" AutoGenerateColumns="False" IsReadOnly="True" Grid.ColumnSpan="2">
            <DataGrid.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform AngleY="-0.146"/>
                    <RotateTransform/>
                    <TranslateTransform Y="-0.497"/>
                </TransformGroup>
            </DataGrid.RenderTransform>
            <DataGrid.Columns>
                <DataGridTextColumn Header="Resource Name" Binding="{Binding ResourceName}" />
                <DataGridTextColumn Header="Quantity Ordered" Binding="{Binding Quantity}" />
                <DataGridTextColumn Header="Order Date" Binding="{Binding OrderDate, StringFormat=\{0:d\}}" />
                <DataGridCheckBoxColumn Header="Dispatched Resource" Binding="{Binding IsChecked}" />
                <DataGridTextColumn/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

【问题讨论】:

  • 你在 dataGridOutstandingOrders_SelectionChanged 中做什么?
  • @Dominic 第一个网格更新第二个绑定的类,即锁定的类

标签: c# wpf xaml datagrid


【解决方案1】:

最终自己解决了这个问题 - 看起来我没有两种选择模式。更新(工作 XAML):

<DataGrid x:Name="dataGridOrderItems" Margin="369,0,4,51" VerticalAlignment="Bottom" Height="405" Grid.Row="1"
VerticalGridLinesBrush="LightGray"  HorizontalGridLinesBrush="LightGray" AlternatingRowBackground="Beige"  AlternationCount="2" 
SelectionMode="Single" SelectionUnit="FullRow" 
AutoGenerateColumns="False" IsReadOnly="False" Grid.ColumnSpan="2">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Resource Name" Binding="{Binding ResourceName}" />
        <DataGridTextColumn Header="Quantity Ordered" Binding="{Binding Quantity}" />
        <DataGridTextColumn Header="Order Date" Binding="{Binding OrderDate, StringFormat=\{0:d\}}" />
        <DataGridCheckBoxColumn Header="Dispatched Resource" Binding="{Binding IsChecked}" />
        <DataGridTextColumn/>
    </DataGrid.Columns>
</DataGrid>

【讨论】:

    【解决方案2】:

    我认为你的 isReadOnly 属性导致了这个。将 isReadOnly 更改为 'False' 后即可解决。

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多