【问题标题】:WPF: Need a nearly "invisible" TabControl. What do I need to override?WPF:需要一个几乎“不可见”的 TabControl。我需要覆盖什么?
【发布时间】:2013-12-10 04:14:28
【问题描述】:

对于我的应用程序,我需要一个TabControl,它将托管 2 个 DataGrid。控件必须尽可能不显眼:只能看到选项卡。

有人告诉我解决方案就在这里:

http://msdn.microsoft.com/en-us/library/ms754137.aspx

我想我必须将一些值更改为零(可能是负数?)

你们能提供详细信息吗?

TIA

【问题讨论】:

  • 这没有意义。如果您只想看到选项卡,为什么要使用数据网格填充它们?你能澄清一下吗?
  • 选项卡控件有阴影和边框。我的 2 个 DataGrids 在容器内的容器内,并且太忙了。每个像素都很重要。 另一个,第三个 DataGrid 在选项卡的左侧,我希望非选项卡的 DataGrid 看起来与选项卡的 DataGrid 完全一样(边框和阴影)。
  • 从概念上讲,我需要的是一对按钮:当一个按钮被按下时另一个按钮不被按下,DataGrids 在单击“按钮”时神奇地出现和消失。
  • 好!这是一个 WPF 切换按钮,其状态绑定到数据网格的可见性属性。其余的都是网格上的样式。到目前为止,一切都可以在 Xaml 中完成。您可能需要编辑您的问题以询问有关切换按钮等的详细信息。
  • 只需从您发布的链接中的默认TabControl 模板中删除MarginPadding 属性。

标签: wpf wpf-controls


【解决方案1】:

我认为使用RadioButton 比使用TabControl 容易得多

<StackPanel Orientation="Horizontal">
    <RadioButton Name="tab1" Content="Tab 1" />
    <RadioButton Name="tab2" Content="Tab 2" />
</StackPanel>
<DataGrid>
    <DataGrid.Visibility>
        <Binding ElementName="tab1" Path="IsChecked">
            <Binding.Converter>
                <BooleanToVisibilityConverter />
            </Binding.Converter>
        </Binding>
    </DataGrid.Visibility>
</DataGrid>
<DataGrid>
    <DataGrid.Visibility>
        <Binding ElementName="tab2" Path="IsChecked">
            <Binding.Converter>
                <BooleanToVisibilityConverter />
            </Binding.Converter>
        </Binding>
    </DataGrid.Visibility>
</DataGrid>

【讨论】:

  • 我不同意这个答案。 TabControl 在每次 TabItem 更改时动态创建/销毁可视化树。你的方法没有做到这一点
  • @HighCore Asker 从未说过他需要那个功能
  • 我以后可能需要添加更多的 DataGrids,我喜欢 3 面标签,它位于底部,顺便说一句。我也需要控制视觉树。我绝对想要一个选项卡控件(具有零宽度“画布”边框)。
  • @Travis 您可以随时设置单选按钮的样式,使其看起来像一个选项卡。而且,如果您有大型数据网格,则每次更改选项卡时将它们加载到可视化树中会很慢。除非我们进入一个完全独立的内存消耗问题,否则这个答案没有任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多