2016-06-15 6 views
1

詳細セクションとツリーセクションを持つ親ユーザーコントロールがあります。私の意図は、私はコントロールを表示して表示することができる必要があります2つのトグルボタンにあります。 Attached the Imagexamlユーザーコントロールのレイアウト - サイジング

<DockPanel> 
     <DockPanel DockPanel.Dock="Left"> 
      <view:ListBoxUserControl DockPanel.Dock="Top" Visibility="{Binding IsListVisible ,Converter={StaticResource BoolToVisibilityConverter}}"/> 
      <view:TreeUserControl DockPanel.Dock="Top" Visibility="{Binding IsTreeVisible,Converter={StaticResource BoolToVisibilityConverter}}"/> 
     </StackPanel> 
      <view:DetailSectionUserControl/> 
    </StackPanel> 

IsListVisibleとIsTreeVisibleは、ビュー内の2つのトグルボタンに基づいて設定されます。

IsListVisibleがfalseの場合、ListBoxUserControlは非表示になり、TreeUserControlは先頭に移動します。これはうまくいきます。

しかし、私はここで2つの問題があります。 1)両方のコントロールのサイズが同じである必要があります。ここで最初のツリーはその中のアイテムに基づいて作成され、残りのスペースはTreeUserControlによって取得されます。どのように私はサイズを均一にするか。

2)ListBoxUserControlに項目を追加すると、コントロールが大きくなり、TreeUserControlのサイズが小さくなります。代わりにスクロールを取得する必要があります。

+0

"両方の木" は何ですか? ListBoxUserControlとTreeUserControl? – omerts

+0

私は、ListBoxUserControlとTreeUserControlの両方を制御していることを意味します。 – Peekay

+0

答えがあなたに役立つかどうかを確認してください – omerts

答えて

1

試してみてください。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition> 
      <RowDefinition.Style> 
       <Style TargetType="{x:Type RowDefinition}"> 
        <Setter Property="Height" Value="*" /> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding IsListVisible}" Value="False"> 
          <Setter Property="Height" Value="0" /> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </RowDefinition.Style> 
     </RowDefinition> 
     <RowDefinition> 
      <RowDefinition.Style> 
       <Style TargetType="{x:Type RowDefinition}"> 
        <Setter Property="Height" Value="*" /> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding IsTreeVisible}" Value="False"> 
          <Setter Property="Height" Value="0" /> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </RowDefinition.Style> 
     </RowDefinition> 
    </Grid.RowDefinitions> 

    <ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 
    <view:ListBoxUserControl Visibility="{Binding IsListVisible ,Converter={StaticResource BoolToVisibilityConverter}}"/>  
    </ScrollViewer> 

    <view:TreeUserControl Grid.Row="1" Visibility="{Binding IsTreeVisible,Converter={StaticResource BoolToVisibilityConverter}}"/> 

</Grid> 
+0

ListBoxUserControlが非表示になっているときに、上に移動するにはTreeUserControlが必要です。共有サイズのグリッドがこの要件を破っています – Peekay

+0

が更新されました。もう一度やり直してください – omerts

+0

パーフェクト。私はその状態を少し修正しました。どちらの場合も、Propertyがfalseの場合、グリッドの高さはゼロに設定されます。助けてくれてありがとう – Peekay

関連する問題