2010-10-11 39 views
2

我得到了一個網格(2行)與網格分離器,分離器是在第二行。分離器移動後,網格行高度綁定停止綁定

我想將第二行高度綁定到一個成員,所以我可以通過一個按鈕單擊來控制視圖: 開始時視圖僅顯示第一行,當按鈕單擊視圖時顯示兩行和分隔符是在中間,連續點擊第二行,分解器在狀態開始時下降。

我做到了,但只有在不使用分離器時纔有效。 使用分離器後,停止綁定。

什麼問題?

+0

燦你添加了一個代碼/ XAML樣本你問什麼?這將有助於瞭解你所談論的確切情況。 – 2010-10-11 14:16:48

回答

1

要使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); 
    } 
} 
-1

你有3行,對吧?我認爲分割器在中間行

+0

不,他在第二排,就像我在少量樣品中看到的那樣,是否好? – 2010-10-11 21:19:50