我有一个TabControl绑定到Viewmodels集合,它被转换为适合绘制到选项卡中的选项:
<Window.Resources>
<ResourceDictionary>
<DataTemplate DataType="{x:Type charting:LineFormatViewModel}">
<charting:LineFormatView />
</DataTemplate>
<DataTemplate DataType="{x:Type charting:IndexSettingsViewModel}">
<charting:IndexSettingsView />
</DataTemplate>
....
</ResourceDictionary>
</Window.Resources>
<TabControl ItemSource="Binding ViewModels" />
我一直试图找到一种方法来始终在任何一个孩子的最大宽度和高度上绘制TabControl。 Let WPF Tabcontrol height assume height of largest item?提到了几种在答案中实现这一点的方法(来自我所理解的):
有没有人有解决类似问题的经验?每当我在这方面取得一些进展时,我似乎都会碰到更多的墙壁。
答案 0 :(得分:0)
您需要使用可以自动适应的命名隐藏控件 创建直接绑定到它们的宽度/高度,如:
Width="{Binding ActualWidth, ElementName=MainGrid}"
答案 1 :(得分:0)
如果其他人遇到这个问题,我在窗口的 ContentRendered 事件处理程序中使用以下代码解决了这个问题:
tabControl.SelectedIndex = 1;
UpdateLayout();
SizeToContent = SizeToContent.Manual;
tabControl.SelectedIndex = 0;
tabsControl 是 TabControl 对象的名称。本质上,我们所做的是切换到具有最大高度的选项卡(在我的示例中为索引 1),更新窗口的布局,告诉窗口停止调整大小以适应其内容,然后切换回第一个选项卡。当然,此解决方案假设您知道哪个选项卡的高度最大,并且您不需要窗口在初始渲染后调整其内容大小。