2013-10-07 200 views
0

我有以下XAMLWPF的RichTextBox增加網格行大小

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> <!--Here Expander with RichTextBox within--> 
     <RowDefinition Height="Auto"/> <!--Here Splitter--> 
     <RowDefinition Height="*"/>  <!--Here some other controls--> 
    </Grid.RowDefinitions> 
... 

問題是,當擴展開放,RichTextBox的文本行填充它會自動提高其heigth以及擴展和網格行的高度,這樣的項目在下排滑落。

我想讓底部網格行高度獨立於richtextbox。我可以在不將RichTextBox高度綁定到擴展器或頂部行高的情況下執行此操作嗎?

謝謝。

+0

現在,您已經配置了最上面兩行,以獲取儘可能多的高度,並且您已經告訴下面一行需要留下任何空間。這聽起來像你只需要給RichTextBox一個特定的高度或者一個最大高度,這樣它就不會變得太大。 –

+0

在中間一排我有分線器讓用戶可以根據需要調整底部和頂部行的大小。這樣頂部和底部網格行可能沒有固定的最大尺寸。我必須配置頂行高度爲「自動」,因爲它基於展開。 – gunboxer

回答

0

好的。我自己找到了最好的解決方案。

我重新設計的XAML方式:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Name="TopRow" Height="42"/> <!--Here Expander with RichTextBox within--> 
     <RowDefinition Height="Auto"/> <!--Here GridSplitter--> 
     <RowDefinition Height="*"/>  <!--Here some other controls--> 
    </Grid.RowDefinitions> 
... 

一開始Expander總是崩潰。 42在摺疊狀態下的高度爲ExpanderGridSplitter認爲在開始時有Visibility.Collapsed

所以我創建了兩個觸發器,擴展:

  • OnExpanded設置TopRow.Height = 160GridSplitter.Visibility = Visibility.Expanded
  • OnCollapsed設置TopRow.Height = 42GridSplitter.Visibility = Visibility.Collapsed

在160,我將使用舊行高度代替(前坍塌)。而已。看起來一切正常。

謝謝。

1

您可以再向網格添加一行,併爲該行定義一個MinHeight。 設置您的DataGrid垂直對齊以拉伸VerticalAlignment = Stretch。還要設置窗口的默認高度尺寸。

+0

我應該在哪裏添加新行?我不太明白。我沒有DataGrid,但有網格。 – gunboxer

+0

您可以設置每行的最小高度 – 2013-10-07 05:22:50

+0

是的,我可以,但它不會阻止底行滑動到其最小高度。我猜滑動不是userfriendy功能。我完全可以避免滑動效果嗎?由於Splitter存在,我無法預測每行的最小高度。 – gunboxer