2016-06-15 4 views
1

У меня есть родительский пользовательский элемент управления, в котором есть раздел подробностей и раздел дерева. Мое намерение состоит в двух кнопках переключения, которые я должен скрыть и показать элементы управления. 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 устанавливаются на основе два тумблера в представлении.

поэтому, когда IsListVisible является ложным, ListBoxUserControl будет скрыт, а TreeUserControl переместится в начало. это хорошо работает.

Но есть две проблемы, с которыми я сталкиваюсь. 1) Требование состоит в том, что оба элемента управления должны иметь одинаковый размер. здесь первое дерево будет создано на основе элементов в нем, а остальная часть пространства будет использоваться TreeUserControl. Как я могу сделать размер даже.

2) Когда я добавляю элемент в ListBoxUserControl, элемент управления просто растет, а размер TreeUserControl уменьшается. Как мне получить свиток вместо этого.

+0

Что "как дерево"? ListBoxUserControl & TreeUserControl? – omerts

+0

Я имею в виду, что оба элемента управления ListBoxUserControl & TreeUserControl – Peekay

+0

Хорошо, посмотрите, поможет ли вам ответ – omerts

ответ

1

Try:

<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

Мне нужно, чтобы TreeUserControl переместился вверх, когда ListBoxUserControl скрыт. Сетка с общим размером нарушает это требование – Peekay

+0

обновлено, повторите попытку – omerts

+0

Отлично. Я сделал небольшую модификацию при условии. В обоих случаях высота сетки равна нулю, когда свойство является ложным. Большое спасибо за помощь – Peekay

Смежные вопросы