繁体   English   中英

WPF Custom TabItem - 控件未显示在Visual Studio Designer中

[英]WPF Custom TabItem - Controls not displayed in Visual Studio Designer

我创建了一个带有DockPanel和Button的自定义TabItem。

XAML:

<TabItem
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      mc:Ignorable="d" x:Class="MovieDB.UI.UserControlls.SearchTab" d:DesignWidth="500.038" d:DesignHeight="309.055">

    <DockPanel Background="#FFE5E5E5">
        <Button x:Name="button" Content="Button" Height="100" Width="75" HorizontalAlignment="Left" VerticalAlignment="Top"/>
    </DockPanel>
</TabItem>

C#:

namespace MovieDB.UI.UserControlls
{
    /// <summary>
    /// Interaktionslogik für SearchTab.xaml
    /// </summary>
    public partial class SearchTab : TabItem
    {
        private SearchContainer<SearchMovie> results;

        public SearchTab()
        {
            InitializeComponent();
            this.Header = "Suche";
        }

        public SearchTab(SearchContainer<SearchMovie> results):this()
        {
            this.updateSearch(results);
        }

        public void updateSearch(SearchContainer<SearchMovie> results)
        {
            clear();
            if(results.TotalResults == 0)
            {

            }
            else
            {
                this.results = results;
                Debug.WriteLine("Results: " + results.Results.Count());
            }
        }

        private void clear()
        {

        }
    }
}

如果启动我的程序,则显示按钮(屏幕截图2)。 但是按钮和我想面板itselve确实noch出现在Visual Studio 2015 Designer中(截图1)。

问题出在哪儿?

截图设计师 运行Programm的截图

如果你把TabItem放在一个TabControl中它工作正常。我认为这是问题。 设计师需要像TabControl,Window Page等导航控件作为root。

<TabControl x:Class="CustomControls.tab"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            mc:Ignorable="d" 
            d:DesignWidth="500.038" d:DesignHeight="309.055">
<TabItem>
    <DockPanel Background="#FFE5E5E5">
        <Button x:Name="button" Content="Button" Height="100" Width="75" HorizontalAlignment="Left" VerticalAlignment="Top"/>
    </DockPanel>
    </TabItem>
</TabControl>

你做了什么应该工作。 但事实并非如此,我稍后会尝试说明原因。

但首先,我的解决方法:

  • 打开设计器,右键单击它,
  • 选择: 编辑其他模板 ,然后编辑生成的内容 ,然后创建空...给新的DataTemplate命名,说' DataTemplate1 '

Designer将生成一些代码 - 一个带有关键DataTemplate1的空DataTemplate ,它将向TabItem添加ContentTemplate属性,并为其分配DataTemplate1 (通过DynamicResource )。

现在将TabItem的内容移动到DataTemplate1 设计师应该正确显示您的布局。

如果您关闭并重新打开SearchTab控件,您将发现无法再次看到该内容。 要右键单击设计器,请选择编辑其他模板 ,然后选择编辑生成的内容 ,然后选择编辑当前

为什么设计师无法加载您的SearchTab 如果右键单击设计器并选择“ 编辑模板” ,然后选择“ 编辑 副本...” ,则会生成TabItem样式。 TabItem的标题由ContentPresenter显示,而TabItem的内容必须显示在innerBorder Border 此边框的“ Opacity设置为零,并且MultiTriggers其更改为1,这取决于TabControl 您的案例中的TabControl不存在,因此所有绑定都被破坏。 这表明,更改“TabItem”的默认Style也可以解决您的问题。

虽然我没有使用我的开发机器,但我只能提供一个建议。 对于您在标签项控件上想要的任何内容,为什么不将所有控件放在自定义用户控件或网格中,前提是您知道要将其添加到动态添加到标签页的标签控件中。

选项卡项需要其正确的父选项卡控件才能在设计器中呈现它。 但是,如果您将所有内容构建为标准控件,请使其外观和操作符合您的预期。

然后在运行时添加标签项,然后将自定义控件添加到动态添加的标签项中,看看它是否适合您。 您显然拥有所有其他组件/流程。 即使您的样本控件只是标签,文本框或类似的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM