簡體   English   中英

當字段中的字符數減少時,更改DataGridTextColumn的寬度

[英]Change the width of the DataGridTextColumn, when the number of characters in the field is reduced

有一個WPF窗口,上面有一個DataGrid。 有一列“名稱”,可以對其進行編輯,並根據其大小而有所不同-它將展開。 在此處輸入圖片說明 在此處輸入圖片說明

我對反向過程感興趣-當用戶刪除一些字符時,它會縮小范圍。 現在是這樣的: 在此處輸入圖片說明

這是刪除符號后我需要的方式: 在此處輸入圖片說明

我通過設置器設置列值單元格的樣式

<Setter Property="HorizontalContentAlignment" Value="Center" />

<Setter Property="HorizontalAlignment" Value="Center" />

但這沒有幫助。 我也嘗試為該列的單元格輸入TextBlock-同樣失敗。 Width = Auto; -也不是一種選擇。

請告訴我,如何使列寬取決於內容。 這是xml項目代碼:

<Grid x:Name="checkinGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,0,10,0"  MinHeight="300" MinWidth="535">
<Grid.RowDefinitions>
    <RowDefinition Height="*"></RowDefinition>
    <RowDefinition Height="65"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<DataGrid x:Name="filesGrid" AutoGenerateColumns="False" HorizontalGridLinesBrush="DarkGray"
RowBackground="LightGray" AlternatingRowBackground="LightGray" Margin="40,25,45,10" Grid.Row="0" Grid.Column="0" 
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
CanUserAddRows ="false" CanUserDeleteRows ="false" ScrollViewer.HorizontalScrollBarVisibility="Visible">
    <DataGrid.Columns>
        <DataGridTextColumn Header="File" Binding="{Binding Path=File}" IsReadOnly="True">
            <DataGridTextColumn.HeaderStyle>
                <Style TargetType="DataGridColumnHeader">
                    <Setter Property="HorizontalContentAlignment" Value="Center" />
                </Style>
            </DataGridTextColumn.HeaderStyle>
        </DataGridTextColumn>

        <DataGridTextColumn x:Name="nameDataGridTextColumn" Header="Name" Binding="{Binding Path=Name}">
            <DataGridTextColumn.HeaderStyle>
                <Style TargetType="DataGridColumnHeader">
                    <Setter Property="HorizontalContentAlignment" Value="Center" />
                </Style>
            </DataGridTextColumn.HeaderStyle>
        </DataGridTextColumn>
    </DataGrid.Columns>

    <DataGrid.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#00FFFFFF"/>
    </DataGrid.Resources>
</DataGrid>

將帖子

我為dataGrid設置了事件CellEditEnding="DataGrid_CellEditEnding"

private void DataGrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            nameDataGridTextColumn.Width = -1;
        }

結果: 在此處輸入圖片說明

不確定要實現什么目的時,將在完成編輯文本框並將焦點移出文本框時執行調用CellEditEnding事件處理程序,而不是在更改文本框內的內容時執行。 您可以通過將代碼更改為來修復代碼

private void arasFilesCheckInGrid_CellEditEnding(Object sender, DataGridCellEditEndingEventArgs e)
{
    filesGrid.Columns[1].Width = new DataGridLength(0);
    filesGrid.Columns[1].Width = new DataGridLength();
}

這將迫使網格重新計算索引為1的列的寬度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM