将WPF Datagrid Horizo​​ntalScrollBar锁定到窗口底部

时间:2019-08-24 05:57:30

标签: c# wpf xaml datagrid

我在网格的最后一行有一个DataGrid。当DataGrid有很多行时,其高度会超出我的UserControl的底部。我正在尝试将DataGrid(或Grid)的底部与UserControl的底部对齐,并在调整窗口大小时使其保持对齐。 VerticalScrollBar仍与UserControl的右侧完全对齐,但Horizo​​ntalScrollBar则没有。

我尝试将容器从网格替换为DockPanel和StackPanel,但是没有运气。此时,我已经尝试了数十种不同的配置,但没有一个起作用。

ask init

隐藏代码:

<reactiveui:ReactiveUserControl 
    x:Class="MyNamespace.Views.MyView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:local="clr-namespace:MyNamespace.Views"
    xmlns:reactiveui="http://reactiveui.net"
    xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
    xmlns:viewmodels="clr-namespace:MyNamespace.ViewModels"
    xmlns:models="clr-namespace:MyNamespace.Models"
    mc:Ignorable="d" 
    x:TypeArguments="viewmodels:MyViewModel"
    d:DesignHeight="450" d:DesignWidth="800">

    <Grid Margin="16 16 0 0">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <DataGrid Name="ExcelData" 
                  EnableColumnVirtualization="True" 
                  EnableRowVirtualization="True" 
                  Grid.Row="2" 
                  AutoGeneratedColumns="ExcelData_AutoGeneratedColumns">
            <DataGrid.CellStyle>
                <Style TargetType="DataGridCell" BasedOn="{StaticResource MaterialDesignDataGridCell}">
                    <Setter Property="Padding" Value="16"/>
                </Style>
            </DataGrid.CellStyle>
            <DataGrid.ColumnHeaderStyle>
                <Style TargetType="DataGridColumnHeader" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}">
                    <Setter Property="HorizontalContentAlignment" Value="Center"/>
                </Style>
            </DataGrid.ColumnHeaderStyle>
        </DataGrid>
    </Grid>
</reactiveui:ReactiveUserControl>

除非使用Height =“”将高度锁定为特定值,否则DataGrid高度将增加到我拥有的行数。

这是底部的样子:

enter image description here

在将窗口高度调整为大于DataGrid的高度之后,Horizo​​ntalScrollBar似乎可以正确地将其自身附加到底部:

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试一下:

SPI_HandleTypeDef hspi1;
SPI_HandleTypeDef hspi2;
SPI_HandleTypeDef hspi3;

TIM_HandleTypeDef htim3;

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USB_OTG_FS_USB_Init(void);
static void MX_SPI1_Init(void);
static void MX_SPI2_Init(void);
static void MX_SPI3_Init(void);
static void MX_TIM3_Init(void);
uint8_t received_data[3],Data_to_send[3];
int main(void)
{
  HAL_Init();
  /* Configure the system clock */
  SystemClock_Config();
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_SPI1_Init();
  MX_SPI2_Init();
  MX_SPI3_Init();
  MX_TIM3_Init();

    while(1)
    {
         HAL_GPIO_WritePin(SPI3_Chip_Select_DAC_GPIO_Port,SPI3_Chip_Select_DAC_Pin,GPIO_PIN_RESET);
     HAL_Delay(1);
     Data_for_try[0]=0xC0;
         HAL_SPI_TransmitReceive(&hspi3,Data_to_send,received_data,3,100);
         HAL_Delay(1);
         HAL_GPIO_WritePin(SPI3_Chip_Select_DAC_GPIO_Port,SPI3_Chip_Select_DAC_Pin,GPIO_PIN_SET);

    }

}

我从<Grid Margin="16 16 0 0"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition /> </Grid.RowDefinitions> <DataGrid Name="ExcelData" EnableColumnVirtualization="True" EnableRowVirtualization="True" Grid.Row="2" AutoGeneratedColumns="ExcelData_AutoGeneratedColumns"> <DataGrid.CellStyle> <Style TargetType="DataGridCell" BasedOn="{StaticResource MaterialDesignDataGridCell}"> <Setter Property="Padding" Value="16"/> </Style> </DataGrid.CellStyle> <DataGrid.ColumnHeaderStyle> <Style TargetType="DataGridColumnHeader" BasedOn="{StaticResource MaterialDesignDataGridColumnHeader}"> <Setter Property="HorizontalContentAlignment" Value="Center"/> </Style> </DataGrid.ColumnHeaderStyle> </DataGrid> </Grid> 删除了ScrollViewerFrozenColumnCount属性。

输出:

enter image description here