.net - WPF 网格 SharedSizeGroup 错误

标签 .net wpf xaml

如果您运行此代码并单击选项卡 2,然后返回选项卡 1,应用程序就会变得疯狂并开始来回弹跳列宽。关于如何解决这个问题有什么建议吗?

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow"
    Height="350"
    Width="525">
<Grid IsSharedSizeScope="True">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto"
                          SharedSizeGroup="Col3" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <TextBlock Text="Label 1"
               Grid.Row="0"
               Grid.Column="0" />

    <TextBox Grid.Column="1"
             Grid.Row="0"
             Text="TextBox 1" />

    <TextBlock Text="Label 2"
               Grid.Row="0"
               Grid.Column="2" />

    <TextBox Grid.Column="3"
             Grid.Row="0"
             Text="TextBox 2" />

    <DockPanel Grid.Row="1"
               Grid.Column="2"
               Grid.ColumnSpan="2">

        <TabControl>
            <TabItem Header="Tab 1">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition SharedSizeGroup="Col3" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>
                    <TextBlock Text="Tab 1: Short Text.."
                               Grid.Row="0"
                               Grid.Column="0" />

                </Grid>
            </TabItem>
            <TabItem Header="Tab 2">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition SharedSizeGroup="Col3" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>
                    <TextBlock Text="Tab 2: Short Text.."
                               Grid.Row="0"
                               Grid.Column="0" />
                    <TextBlock Text="Tab 2: Long Text..................................... "
                               Grid.Row="1"
                               Grid.Column="0" />
                </Grid>
            </TabItem>
        </TabControl>
    </DockPanel>
    </Grid>
</Window>

这是从类似的应用程序中剥离出来并大大简化的。问题的根源是 SharedSizeGroup“Col3”。在实际的应用程序中,还有其他项目共享该列,因此我无法删除 SharedSizeGroup,除非有其他方法来完成所需的行为。

最佳答案

在父元素 (TabControl) 上将附加属性 Grid.IsSharedSizeScope 设置为 True 应该会停止层次结构上方的大小共享传播。就像这样:

<TabControl Grid.IsSharedSizeScope="True">

TabControl 内,尺寸将对齐。

关于.net - WPF 网格 SharedSizeGroup 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3063468/

相关文章:

asp.net - EPplus 装配错误

wpf - 在手动检查视觉元素(MVVM)之前,绑定(bind)到 ItemsSource 不起作用

wpf - 将边距定义为静态资源是否会产生显着的性能开销?

c# - 在 C# 4.0 中在运行时附加属性和方法?

c# - 使用Docker在Linux中运行dotnet应用程序

javascript - 对如何在来自 javascript 的 C# .NET 中实现 HMACSHA1 感到困惑

c# - WPF 从多个 View 模型将选项卡项添加到选项卡控件

c# - WPF - MVVM 文本框限制为特定字符

c# - ListView的集合中多个IsSelected

c# - Xamarin ListView 不显示数据