【问题标题】:Window size and TabControl with DataBinding (Size of Items)窗口大小和 TabControl 与 DataBinding(项目大小)
【发布时间】:2010-11-09 08:41:23
【问题描述】:

下面的场景让我很困扰: 我有一个简单的 WPF 窗口,其中有一个 TabControl 作为内容。 TabControl 的 ItemsSource 绑定到对象列表。为了可视化对象,我定义了一些 DataTemplates。由于对象列表可能具有不同的类型,因此默认模板选择器会选择正确的可视化。这工作正常,不会造成任何麻烦。

出现的问题是窗口的大小。 DataTemplate 有不同的大小。我希望对话框的大小适合最大的 DataTemplate。当我在 Window 中使用 SizeToContent 时,每次更改选项卡时,Window 都会更改其大小。

所以,我的问题是,如何才能使窗口适合最大的 TabItem(大小由 DataTemplate 确定)?

谢谢, 弗洛里安

【问题讨论】:

    标签: wpf


    【解决方案1】:

    您遇到的问题是,由于未显示较大的 DataTemplate,因此在调整内容大小时未考虑其大小。

    您的选择:
    1) 在适当的控件(tabcontrol、Window、DataTemplate 等)上手动设置(最小)宽度/高度
    2)如果您知道某个选项卡总是比其他选项卡大,您可以将其他选项卡的宽度/高度绑定到更大的选项卡:

    <TabItem>
        <StackPanel Name="stackPanelBiggest" />
    </TabItem>
    <TabItem>
        <StackPanel Width="{Binding ElementName=stackPanelBiggest, Path=ActualWidth}" />
    </TabItem>
    

    我认为要使上述内容起作用,最大的选项卡必须是第一个显示的选项卡。虽然选项卡控件在切换到另一个选项卡时破坏了前一个选项卡的可视化树,但这种方法仍然适用于我(尽管切换选项卡后 ActualWidth 应该为 0 或 NaN)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多