2015-10-23 164 views
0

只讀列的Datagrid在數據字段綁定到更改時被調整大小。防止WPF Datagrid列調整大小

最初它顯示寬度約爲100px,但由於外部數據源的更改導致它的大小調整爲150px。

即使列內顯示的數據發生變化,我想確保數據列的寬度不會改變。

設置MaxWidth修復了這個問題,但它阻止了用戶手動調整列的大小,這是不可接受的。

+0

我要最後用從溶液中去這裏 - http://stackoverflow.com/questions/4997596/how-can-i-set-the-width-of-a-datagridcolumn-to-fit-contents-auto-but-comple –

回答

0

您可以使用AutoGeneratingColumn事件並在其中處理寬度。

在XAML:

<DataGrid AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"/> 

在後面的代碼:

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
{ 
    e.Column.Width = new DataGridLength(100); 
} 

這將從根本上限制列大小正在發生時,他們卻仍然允許一旦被安裝在用戶重新大小他們。

+0

列不是自動生成的。這隻有在列自動生成時纔有效。 –

+0

以爲他們是 - 看看0xBADF00D的回答 – kskyriacou

0

如果不自動生成像kyriacos_k的answere列,你可以簡單地設置列的寬度和數據網格本身的CanUserResizeColumns屬性:

<DataGrid ItemsSource="{Binding YourSource}" 
         CanUserResizeColumns="True" 
         EnableRowVirtualization="True"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Width="100" Header="CustomHeader" Binding="{Binding YourProperty, Mode=OneWay}" /> 
    <DataGrid.Columns> 
</DataGrid>