xaml用户控件布局-Sizing

时间:2016-06-15 15:20:20

标签: wpf xaml

我有一个父用户控件,其中包含详细信息部分和树部分。我的意图是两个切换按钮我应该能够隐藏和显示控件。 Attached the Image

 <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基于视图中的两个切换按钮设置。

因此,当IsListVisible为false时,ListBoxUserControl将被隐藏,TreeUserControl将移至顶部。这很好用。

但我面临两个问题。 1)要求两个控件应具有相同的大小。这里将根据其中的项创建第一个树,其余的空间将由TreeUserControl获取。我怎样才能使尺寸均匀。

2)当我向ListBoxUserControl添加一个项目时,控件只会增长,TreeUserControl的大小会减少。我怎么能得到一个卷轴。

1 个答案:

答案 0 :(得分: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>