【问题标题】:Creating tabitem in wpf C# xaml?在 wpf C# xaml 中创建 tabitem?
【发布时间】:2019-11-13 17:58:06
【问题描述】:

是否可以像这样放置 Tapitem:

子项(内容)应该跨越网格,但父项(TapItem)不应该这样做。

我试过如下。

 <Grid Grid.Column="1" Grid.Row="2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*" x:Name="PropertyBarWidth"/>
            <ColumnDefinition Width="10*" x:Name="DrawingAreaWidth"/>
            <ColumnDefinition Width="1*" x:Name="LibraryWidth"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="25"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <TabControl Grid.ColumnSpan="3" Grid.RowSpan="2" x:Name="OpenDrawings" Background="{StaticResource B_drawingarea}" BorderThickness="0">
            <TabItem Header="Test" Grid.Column="1" Grid.RowSpan="1" Grid.Row="0" Style="{StaticResource TabItemStyle}">
                <local:UserControl1></local:UserControl1>
            </TabItem>
        </TabControl>

        <Rectangle Grid.RowSpan="2" Fill="{StaticResource B_propertybar}"/>
        <GridSplitter Grid.Row="0" Grid.RowSpan="2" Height="100" Width="20"/>
        <Rectangle Grid.RowSpan="2" Grid.Column="2" Fill="{StaticResource B_propertybar}"/>

</Grid>

这里的问题是,gridsplitter 不应该移动tabitem 的内容。但是左右区域应该随着tapitem本身移动。

也许有人可以帮忙,谢谢!

【问题讨论】:

  • 目前还不清楚您要实现什么目标,每个选项卡是否有两个网格拆分器,或者一个对所有选项卡都通用?
  • 我在 tabitem 中有一个绘图区,即用户控件。左右我有一个用于绘图对象的属性栏。当我使用 gridsplitters 更改属性栏的宽度时,绘图区域不应该随之移动(绘图区域的视图应该可以通过滚动查看器和缩放单独更改)。另一方面,tabitems 的标题应该在属性栏之间。
  • 一个(或两个)GridSplitters 用于所有标签^^

标签: c# wpf xaml user-interface


【解决方案1】:

使用 Docking 控件比使用简单的 Grid 拆分器更可行,只需使用 Xceed AvalonDock 控件,不要浪费时间重新发明轮子;}:

<Window ...
    xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
    Title="MainWindow" Height="600" Width="1024">
<Grid>
    <xcad:DockingManager BorderThickness="1">
        <xcad:LayoutRoot x:Name="LayoutRoot">
            <xcad:LayoutPanel Orientation="Horizontal">
                <xcad:LayoutAnchorablePane IsMaximized="True" >
                    <xcad:LayoutAnchorable ContentId="MainTab" Title="MainTab" CanHide="False" CanClose="False"
                              AutoHideWidth="240">
                        <Grid>
                            <Border Background="LightSalmon"/>
                            <!--your main panel with the drawing usercontrol-->
                        </Grid>
                    </xcad:LayoutAnchorable>
                </xcad:LayoutAnchorablePane>
            </xcad:LayoutPanel>

            <xcad:LayoutRoot.LeftSide>
                <xcad:LayoutAnchorSide>
                    <xcad:LayoutAnchorGroup>
                        <xcad:LayoutAnchorable Title="LeftSideTools" ContentId="LeftSide">
                            <Grid>
                                <Border Background="LightSalmon"/>
                                <!--your left panel tools--> 
                            </Grid>
                        </xcad:LayoutAnchorable>
                    </xcad:LayoutAnchorGroup>
                </xcad:LayoutAnchorSide>
            </xcad:LayoutRoot.LeftSide> 
            <xcad:LayoutRoot.RightSide>
                <xcad:LayoutAnchorSide>
                    <xcad:LayoutAnchorGroup>
                        <xcad:LayoutAnchorable Title="RightSideTools" ContentId="RightSide">
                            <Grid>
                                <Border Background="LightSalmon"/>
                                <!--your right panel tools--> 
                            </Grid>
                        </xcad:LayoutAnchorable>
                    </xcad:LayoutAnchorGroup>
                </xcad:LayoutAnchorSide>
            </xcad:LayoutRoot.RightSide>
        </xcad:LayoutRoot>
    </xcad:DockingManager>
</Grid>

Here 是包块。

【讨论】:

  • 看起来不错,谢谢!是否可以免费用于商业用途?在 nuget Gallery 我只看到“您可以免费试用此软件包 45 天,之后您需要购买许可证密钥才能继续使用它。”但我找不到任何购买的可能性。
  • @user10419906 据我所知,扩展 WPF 工具包(AvalonDock 是其中的一部分)是免费和开源的(也可用于商业产品):github.com/xceedsoftware/wpftoolkit 加号版本不是:@ 987654324@
猜你喜欢
  • 2013-10-02
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多