我有一个可以调整大小的wpf窗口:
<Window x:Class="WpfTester.BadResize"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BadResize"
Height="300"
Width="600"
MinWidth="600">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="250" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Left Panel" />
<GridSplitter Grid.Column="1"
ResizeDirection="Columns"
Width="3"
HorizontalAlignment="Stretch" />
<TextBox Grid.Column="2"
TextWrapping="Wrap"
Text="Test text test text test text test text test text test text test text test text test text text test text test text test text" />
</Grid>
</Window>
此窗口有一个网格,左侧和右侧面板以及它们之间的GridSplitter。
我运行程序:
然后我执行以下步骤:
答案 0 :(得分:0)
您不应为您的gridsplitter创建一个列。将其与您的某个元素保持在同一列中。这种方式更具可预测性,并且您知道它正在调整哪些列。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="250" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Left Panel" Margin="0,0,3,0"/>
<GridSplitter Grid.Column="0"
ResizeDirection="Columns"
Width="3"
HorizontalAlignment="Right" VerticalAlignment="Stretch" />
<TextBox Grid.Column="1"
TextWrapping="Wrap"
Text="Test text test text test text test text test text test text test text test text test text text test text test text test text" />
</Grid>
我想将第一列宽度设置为AUTO更有意义,但当然可以尝试自己,看看哪种更适合。
答案 1 :(得分:0)
经过多次实验后,如果有另一个元素(非零边距)测量列宽并将该值绑定到TextBox.Width
,Wrap只适用于GridSplitter。<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="250"/>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Left Panel" Name="lbl"/>
<GridSplitter Grid.Column="1" Width="3" HorizontalAlignment="Stretch" />
<Border Grid.Column="2" Name="test" Margin="0.05"/>
<TextBox Grid.Column="2"
Width="{Binding ActualWidth, ElementName=test, Mode=OneWay}"
TextWrapping="Wrap"
Text="Test1 text2 test3 text4 test5 text6 test7 text8 test9 text0 test1 text2 test3 text4 test5 text6 test7 text8 text9 test0 text1 test2 text3 test4 text5" />
</Grid>