[英]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.