gpt4 book ai didi

WPF:选项卡控件和数据模板

转载 作者:行者123 更新时间:2023-12-03 08:37:49 26 4
gpt4 key购买 nike

我只想了解以下情况。我在哪里实现 <TabControl>绑定(bind)到 ObservableCollection<TabViewModel>
没有数据模板

当我没有任何DataTemplate s, 正文 WpfApplication1.TabViewModel出现在选项卡标题和内容中。好的,我理解这部分。

只需 ItemTemplate

当我刚有

<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding TabTitle}" />
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>

然后我的标签页眉被填满。标签内容仍然是 WpfApplication1.TabViewModel .

只需 DataTemplate

当我的 <Window.Resources> 中只有以下内容时
<DataTemplate DataType="{x:Type local:TabViewModel}">
<TextBox Text="{Binding Text}" />
</DataTemplate>

该模板填充了选项卡标题。

两个

当我拥有两者时, ItemTemplateDataTemplate 时填充选项卡标题填满标签内容。为什么所有这些差异。 ItemTemplate & DataTemplate如果另一个不存在,则填充选项卡标题。如果两者都存在, ItemTemplateDataTemplate 时填满标题填充内容。

虽然我有工作,但我很困惑。不应该像 <TabControl.HeaderTemplate>填充标题和 <TabControl.ItemTemplate>填写内容?

最佳答案

首先,这里涉及到两个模板:

  • TabControl.ItemTemplate ,用于渲染 TabItem标题
  • TabControl.ContentTemplate ,用于渲染 TabItem内容

  • 如果您没有明确设置这些属性,那么 WPF 将尝试在其他地方解析它们。它将沿着逻辑树查找资源,告诉它如何呈现您的 View 模型。如果找到 DataTemplate具有匹配的 DataType但没有键,它将使用它来渲染 View 模型。如果找不到,它将默认呈现 ToString对象的值(value)。

    所以,如果你想明确一点,你想要这样的东西:
    <TabControl ItemsSource="{Binding Tabs}">
    <TabControl.ItemTemplate>
    <DataTemplate>
    <TextBlock Text="{Binding TabTitle}"/>
    </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
    <DataTemplate>
    <TextBlock Text="{Binding Text}"/>
    </DataTemplate>
    </TabControl.ContentTemplate>
    </TabControl>

    由于您没有具体说明,WPF 正试图沿着您的逻辑树查找合适的 DataTemplate。 .当它找到它时,它会使用它来渲染 View 模型。在找不到的地方,它会调用 ToString并呈现。

    因此,为了解决您的具体情况:

    只是项目模板

    您已经明确说明了如何呈现选项卡标题而不是选项卡内容。所以前者使用提供的 DataTemplate 渲染。 , 但后者默认为 ToString .

    只是数据模板

    您没有明确说明如何呈现选项卡标题或选项卡内容。因此,WPF 搜索合适的 DataTemplate对彼此而言。由于两者都包含您的 View 模型的实例(这是他们的 DataContext ),所以相同的 DataTemplate将用于呈现选项卡标题及其内容。

    注意:您没有明确说明这是您的问题中发生的情况。如我错了请纠正我。

    两个

    在这种情况下,您已经明确说明了如何呈现选项卡标题而不是选项卡内容。因此,显式 DataTemplate用于选项卡标题和隐式 DataTemplate用于标签内容。

    关于WPF:选项卡控件和数据模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4058003/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com