Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在没有按钮的情况下折叠数据网格?_C#_Wpf_Wpfdatagrid - Fatal编程技术网

C# 如何在没有按钮的情况下折叠数据网格?

C# 如何在没有按钮的情况下折叠数据网格?,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,当前,当用户单击项目列表时,该行将展开。我需要帮助,当用户再次点击列表时,它将折叠。我不想把任何按钮(如果可能的话),这将是一个触摸屏系统。 这是我当前的输出: 这是我的代码: <StackPanel Name="spItemDisplay" HorizontalAlignment="Stretch" Margin="0,10,0,0" Grid.Row="3" VerticalAlignment="Stretch" Orientation="Horizontal" >

当前,当用户单击项目列表时,该行将展开。我需要帮助,当用户再次点击列表时,它将折叠。我不想把任何按钮(如果可能的话),这将是一个触摸屏系统。 这是我当前的输出:

这是我的代码:

<StackPanel Name="spItemDisplay"  HorizontalAlignment="Stretch" Margin="0,10,0,0" Grid.Row="3" VerticalAlignment="Stretch" Orientation="Horizontal" >
     <ScrollViewer HorizontalAlignment="Right" >
       <DataGrid HorizontalAlignment="Center"  Width="1096" Name="dgItemDisplay" AutoGenerateColumns="False" Height="auto" >
            <DataGrid.Columns>
                <DataGridTextColumn  IsReadOnly="True" x:Name="dgItemCode" Width="300" Header="Barcode" Binding="{Binding ItemCode}" />
                <DataGridTextColumn IsReadOnly="True" x:Name="dgItemName" Width="500" Header="Item Name" Binding="{Binding ItemName}" />
                <DataGridTextColumn IsReadOnly="True" x:Name="dgItemPrice" Width="250" Header="Item Price" Binding="{Binding ItemPrice, StringFormat=RM {0}}" />
               </DataGrid.Columns>
        <DataGrid.RowDetailsTemplate >
         <DataTemplate>
            <StackPanel Name="spItemDisplay2" HorizontalAlignment="Stretch" Background="White"  >
                <Grid Margin="0,10"  >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="300" />
                        <ColumnDefinition Width="300" />
                        <ColumnDefinition Width="100" />
                        <ColumnDefinition Width="100" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                         <RowDefinition Height="30" />
                         <RowDefinition Height="30" />
                         <RowDefinition Height="30" />
                         <RowDefinition Height="30" />
                      </Grid.RowDefinitions>
                         <TextBlock Text="Quantity: " FontWeight="Bold" Grid.Column="2" Grid.Row="0"/>
                         <TextBox KeyDown="TxtQty_KeyDown" x:Name="txtQty" Text="{Binding Quantity, UpdateSourceTrigger=PropertyChanged}" Grid.Column="3" Grid.Row="0"/>
                         <TextBlock Text="Discount: " FontWeight="Bold" Grid.Column="2" Grid.Row="1"/>
                         <TextBox KeyDown="TxtDisc_KeyDown" x:Name="txtDisc" Text="{Binding Discount, UpdateSourceTrigger=PropertyChanged}" Grid.Column="3" Grid.Row="1"/>
                         <Button Content="Remove Item"  HorizontalAlignment="Left" VerticalAlignment="Stretch" Width="95" Click="btnRemoveItem_Click" Grid.Column="3" FontSize="10" Grid.Row="3"/>
                </Grid>
            </StackPanel>
           </DataTemplate>
        </DataGrid.RowDetailsTemplate>
      </DataGrid>
    </ScrollViewer>
</StackPanel>

我已经找到了解决方案

我正在添加MouseLeftButtonUp事件

然后在代码后面

private void DgItemDisplay_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        DataGrid dg = sender as DataGrid;
        if (dg == null)
            return;
        if (dg.RowDetailsVisibilityMode == DataGridRowDetailsVisibilityMode.VisibleWhenSelected)
            dg.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.Collapsed;
        else
            dg.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.VisibleWhenSelected;
    }

触摸屏?!?请注意,鼠标事件是针对鼠标而非触摸的…@NawedNabiZada哦,我还没有在触摸屏系统上测试它。所以我不知道它是否起作用。你知道触摸屏应该用什么吗?像触地得分之类的?