2017-02-13 20 views
0

У меня есть TabControl, который содержит TreeListControl. Я ищу способ, которым TreeListControl всегда будет занимать всю область Tab, даже если размер вкладки изменяется в результате изменения размера приложения и т. Д. Как мне это сделать? (К сожалению, я не вижу эквивалент Dock.Fill WinForms')Управление WPF C# занимает всю область своего родителя

  <dxdo:DockLayoutManager FloatingMode="Desktop" ClosedPanelsBarVisibility="Never"> 
      <dxdo:LayoutGroup Orientation="Horizontal"> 
       <dxdo:LayoutPanel x:Name="Navigation" Caption="Navigation" AllowClose="False" ItemWidth="200"> 
        <dx:DXTabControl> 
         <dx:DXTabItem Header="Tasks"> 
          <Grid Background="Transparent"> 
           <dxg:TreeListControl AutoGenerateColumns="AddNew" EnableSmartColumnsGeneration="True" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="254" Width="151"> 
            <dxg:TreeListControl.View> 
             <dxg:TreeListView AllowPerPixelScrolling="True" ShowTotalSummary="True" Height="291" Margin="-17,-19,-24.4,-19.2" VerticalAlignment="Bottom" /> 
            </dxg:TreeListControl.View> 
           </dxg:TreeListControl> 
          </Grid> 
         </dx:DXTabItem> 
         <dx:DXTabItem Header="Blocks"> 
          <Grid Background="Transparent"/> 
         </dx:DXTabItem> 
         <dx:DXTabItem Header="Functions"/> 
        </dx:DXTabControl> 
       </dxdo:LayoutPanel> 
       <dxdo:DocumentGroup x:Name="Documents" DestroyOnClosingChildren="False" ClosingBehavior="HideToClosedPanelsCollection" 
            dxmvvm:UIRegion.Region="{x:Static common:Regions.Documents}"> 
        <dxdo:DocumentGroup.ItemStyle> 
         <Style TargetType="{x:Type dxdo:LayoutPanel}"> 
          <Setter Property="Caption" Value="{Binding Caption}"/> 
          <Setter Property="IsActive" Value="{Binding IsActive, Mode=TwoWay}"/> 
         </Style> 
        </dxdo:DocumentGroup.ItemStyle> 
       </dxdo:DocumentGroup> 
      </dxdo:LayoutGroup> 
     </dxdo:DockLayoutManager> 

Я хотел бы попробовать предложения, но споткнулся на ошибки во время выполнения на линии 74, поз 7. В частности, в этом - - одну строку перед последний. Не знаю, почему ... здесь не полный код (последняя строка закрытия UserControl тег не показывается здесь по какой-то причине:

<UserControl 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:common="clr-namespace:PLCProg.Common;assembly=PLCProg.Common" 
     xmlns:views="clr-namespace:PLCProg.Main.Views" 
     xmlns:viewModels="clr-namespace:PLCProg.Main.ViewModels" 
     xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm" 
     xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" 
     xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" 
     xmlns:dxr="http://schemas.devexpress.com/winfx/2008/xaml/ribbon" 
     xmlns:dxn="http://schemas.devexpress.com/winfx/2008/xaml/navbar" 
     xmlns:dxdo="http://schemas.devexpress.com/winfx/2008/xaml/docking" 
     xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" xmlns:dxdiag="http://schemas.devexpress.com/winfx/2008/xaml/diagram" x:Class="PLCProg.Main.Views.MainView" 
     mc:Ignorable="d" d:DesignHeight="500" d:DesignWidth="600" 
     d:DataContext="{dxmvvm:ViewModelSource {x:Type viewModels:MainViewModel}}"> 
<dxmvvm:Interaction.Behaviors> 
    <dxmvvm:VisualStateService/> 
</dxmvvm:Interaction.Behaviors> 
<dxb:BarManager> 
    <DockPanel> 
     <dxr:RibbonControl DockPanel.Dock="Top" RibbonStyle="Office2010" ToolbarShowMode="Hide"> 
      <dxr:RibbonDefaultPageCategory> 
       <dxr:RibbonPage x:Name="ribbonPage_Main" Caption="View"> 
        <dxr:RibbonPageGroup x:Name="ribbonPageGroup_Main"> 
         <dxr:RibbonGalleryBarItem x:Name="ribbonGalleryBarItem_Theme"> 
          <dxmvvm:Interaction.Behaviors> 
           <dxr:RibbonGalleryItemThemeSelectorBehavior/> 
          </dxmvvm:Interaction.Behaviors> 
         </dxr:RibbonGalleryBarItem> 
        </dxr:RibbonPageGroup> 
        <dxr:RibbonPageGroup x:Name="My_Group" Caption="My Group"> 
         <dxb:BarButtonItem x:Name="NewProgramBtn" Content="New Program" Glyph="{dx:DXImage Image=Add_16x16.png}" LargeGlyph="{dx:DXImage Image=Add_32x32.png}" /> 
         <dxb:BarButtonItem x:Name="NewTaskBtn" Content="New Task" Glyph="{dx:DXImage Image=AddFile_16x16.png}" LargeGlyph="{dx:DXImage Image=AddItem_32x32.png}" /> 
        </dxr:RibbonPageGroup> 
       </dxr:RibbonPage> 
      </dxr:RibbonDefaultPageCategory> 
     </dxr:RibbonControl> 
     <dxdo:DockLayoutManager FloatingMode="Desktop" ClosedPanelsBarVisibility="Never"> 
      <dxdo:LayoutGroup Orientation="Horizontal"> 
       <dxdo:LayoutPanel x:Name="Navigation" Caption="Navigation" AllowClose="False" ItemWidth="200"> 
        <dx:DXTabControl> 
         <dx:DXTabItem Header="Tasks"> 
          <Grid Background="Transparent"> 
           <dxg:TreeListControl AutoGenerateColumns="AddNew" EnableSmartColumnsGeneration="True" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="254" Width="151"> 
            <dxg:TreeListControl.View> 
             <dxg:TreeListView AllowPerPixelScrolling="True" ShowTotalSummary="True" Height="291" Margin="10, 10, 0, 0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> 
            </dxg:TreeListControl.View> 
           </dxg:TreeListControl> 
          </Grid> 
         </dx:DXTabItem> 
         <dx:DXTabItem Header="Blocks"> 
          <Grid Background="Transparent"/> 
         </dx:DXTabItem> 
         <dx:DXTabItem Header="Functions"/> 
        </dx:DXTabControl> 
       </dxdo:LayoutPanel> 
       <dxdo:DocumentGroup x:Name="Documents" DestroyOnClosingChildren="False" ClosingBehavior="HideToClosedPanelsCollection" 
            dxmvvm:UIRegion.Region="{x:Static common:Regions.Documents}"> 
        <dxdo:DocumentGroup.ItemStyle> 
         <Style TargetType="{x:Type dxdo:LayoutPanel}"> 
          <Setter Property="Caption" Value="{Binding Caption}"/> 
          <Setter Property="IsActive" Value="{Binding IsActive, Mode=TwoWay}"/> 
         </Style> 
        </dxdo:DocumentGroup.ItemStyle> 
        <dxdo:DocumentPanel Caption="Document"> 
         <dxdiag:DiagramControl SelectedStencils="BasicShapes, BasicFlowchartShapes"/> 
        </dxdo:DocumentPanel> 
       </dxdo:DocumentGroup> 
      </dxdo:LayoutGroup> 
     </dxdo:DockLayoutManager> 
    </DockPanel> 
</dxb:BarManager> 

+0

Пробовал ли вы 'HorizontalAlignment =" Stretch "VerticalAlignment =" Stretch "'? –

+0

1. Видимо, добавление кнопки к ленте вызывало ошибку времени выполнения, которую я описал в моем редактировании ... –

+0

2. Настройки «Stretch», которые я добавил, не сработали ... –

ответ

1

Если вы отметите эту Xaml:.

<TabControl> 
     <TabItem Header="Tasks"> 
      <Border Background="Blue" /> 
     </TabItem> 
    </TabControl> 

Вы можете видеть, что содержимое TabItem будет занимать всю область.

В вашем случае установите

HorizontalAlignment="Stretch" 
VerticalAlignment="Stretch" 

и не устанавливайте Height = "254" и Ширина = "151" вас TreeListControl.

+0

Это работает как шарм - огромное спасибо ... так много лет в WinForms, это не просто перейти на WPF .. . –

+0

@LeonHavin The Drag and D Дизайнер rop устанавливает множество свойств, которые вам не нужны, поэтому только потому, что дизайнер поставил их там, не означает, что вы не можете их снять, – MikeT

0

Изменение свойств выравнивания (HorizontalAlignment и VerticalAlignment) Протянуть

<dxg:TreeListControl AutoGenerateColumns="AddNew" EnableSmartColumnsGeneration="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="10,10,0,0" VerticalAlignment="Top" Height="254" Width="151"> 
+0

Настройки "Stretch" добавлено не работает ... кроме того, у вас есть VerticalAlignment в два раза, так что это не сработает ... –