我得到了一個網格(2行)與網格分離器,分離器是在第二行。分離器移動後,網格行高度綁定停止綁定
我想將第二行高度綁定到一個成員,所以我可以通過一個按鈕單擊來控制視圖: 開始時視圖僅顯示第一行,當按鈕單擊視圖時顯示兩行和分隔符是在中間,連續點擊第二行,分解器在狀態開始時下降。
我做到了,但只有在不使用分離器時纔有效。 使用分離器後,停止綁定。
什麼問題?
我得到了一個網格(2行)與網格分離器,分離器是在第二行。分離器移動後,網格行高度綁定停止綁定
我想將第二行高度綁定到一個成員,所以我可以通過一個按鈕單擊來控制視圖: 開始時視圖僅顯示第一行,當按鈕單擊視圖時顯示兩行和分隔符是在中間,連續點擊第二行,分解器在狀態開始時下降。
我做到了,但只有在不使用分離器時纔有效。 使用分離器後,停止綁定。
什麼問題?
要使GridSplitter恢復到原始位置,請將RowDefinition Height綁定到GridSplitter之間的兩個Grid.RowDefinitions。請注意,我通常還會將GridSplitter放置在自己的Grid RowDefinition中,並使用Height = Auto。
我包含了下面的RowDefinition Height和Button命令的綁定,其他一切都只是我用於顯示目的的一些數據。 您也可以通過Button Click事件的代碼綁定來完成此操作。
這裏是XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="{Binding Path=Row0GridHeight, Mode=TwoWay}"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="{Binding Path=Row2GridHeight, Mode=TwoWay}" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<TextBox Text="Enter text here"/>
<Button Content="Click"
VerticalAlignment="Top"
Height="23"
Command="{Binding Path=ToggleViewCommand}"/>
</StackPanel>
<GridSplitter Grid.Row="1"
ResizeBehavior="PreviousAndNext"
HorizontalAlignment="Stretch"
ResizeDirection="Rows"
Height="5"/>
<Grid Grid.Row="2">
<ListBox>
<ListBox.Items>
<TextBlock Text="Choice 1"/>
<TextBlock Text="Choice 2"/>
<TextBlock Text="Choice 3"/>
<TextBlock Text="Choice 4"/>
<TextBlock Text="Choice 5"/>
</ListBox.Items>
</ListBox>
</Grid>
</Grid>
這裏是RowDefinition高度結合:
private GridLength _row0GridHeight = new GridLength(1, GridUnitType.Star);
public GridLength Row0GridHeight
{
get
{
return _row0GridHeight;
}
set
{
_row0GridHeight = value;
NotifyPropertyChanged("Row0GridHeight");
}
}
private GridLength _row2GridHeight = new GridLength(0, GridUnitType.Star);
public GridLength Row2GridHeight
{
get
{
return _row2GridHeight;
}
set
{
_row2GridHeight = value;
NotifyPropertyChanged("Row2GridHeight");
}
}
這裏是命令從按鈕綁定(實現的ICommand):
private void ExecuteToggleViewCommand(Object args)
{
if (_row2GridHeight.Value == 1)
{
Row2GridHeight = new GridLength(0, GridUnitType.Star);
}
else
{
Row0GridHeight = new GridLength(1, GridUnitType.Star);
Row2GridHeight = new GridLength(1, GridUnitType.Star);
}
}
你有3行,對吧?我認爲分割器在中間行
不,他在第二排,就像我在少量樣品中看到的那樣,是否好? – 2010-10-11 21:19:50
燦你添加了一個代碼/ XAML樣本你問什麼?這將有助於瞭解你所談論的確切情況。 – 2010-10-11 14:16:48