2013-04-15 35 views
1

我正在製作WPF應用程序。我有一個數據網格,所有列都將其寬度設置爲「Auto」。當我開始滾動表格時,某些列開始展開。我的問題是:我可以設置列寬以適應列中最長的數據(當我滾動時不擴展列)?無法通過設置WPF中的表格寬度

+0

發佈您的代碼,否則其猜測 – makc

回答

0

當設置爲Auto時,顯示的數據需要更多空間時,wpf擴展的列寬將自動完成。

0

那麼這是由於DataGrid的虛擬化。只有可見的項目纔會被渲染,並且控件在滾動的情況下被重用(如果您正在激活它)。所以寬度將不正確,因爲最長的元素還沒有渲染。列表控件表現非常好,儘管您可能會綁定很多項目。

我覺得你有2個選項

  1. 關閉虛擬化,這可能是一個妥善的解決辦法,如果你沒有太多的內容,以顯示。我必須承認,我沒有嘗試過,所以沒有保修。您可以通過<DataGrid VirtualizingStackPanel.IsVirtualizing="False"/>將其關閉。欲瞭解更多有關VirtualizationStackPanel的信息請看看here

  2. 另一種解決方案可能是TextTrimming。如果文字太長,TextBlocks可能會顯示Ellipses。因此,你將不得不爲該列分配一個自定義數據模板,將以下內容作爲內容<TextBlock Text="{Binding}" TextTrimming="WordEllipsis"/>。請注意,如果用戶能夠編輯這些值,您還必須提供一個客戶CellEditingTemplate。有關TextTrimming的更多信息,請查看here。要想知道的整個DataTemplate工作情況如何,您可以看看here

+0

謝謝!這的工作就好了。 – daidai

+0

不客氣。請注意,回覆您問題的帖子應該標記爲這樣。 – DHN