我创建了一个带有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)。
问题出在哪里?
答案 0 :(得分:3)
如果你把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>
答案 1 :(得分:1)
你做了什么应该工作。但事实并非如此,我稍后会尝试说明原因。
但首先,我的解决方法:
DataTemplate
个名称,说' DataTemplate1 ' Designer会生成一些代码 - 一个空的DataTemplate
,其中包含一个键 DataTemplate1 ,它会将您的TabItem
ContentTemplate
属性添加到<{1}} > DataTemplate1 分配给它(DynamicResource
)。
现在将TabItem
的内容移至 DataTemplate1 。设计师应该正确显示您的布局。
如果您关闭并重新打开 SearchTab 控件,您将发现无法再次看到该内容。要右键单击设计器,请选择编辑其他模板,然后选择编辑生成的内容,然后编辑当前。
为什么设计师无法加载 SearchTab ?如果右键单击设计器并选择编辑模板,然后编辑副本... ,您将生成TabItem
样式。 Content {1}}的标题由ContentPresenter显示,而TabItem的内容必须显示在 innerBorder TabItem
内。此边框的Border
设置为零,并且Opacity
将其更改为1,这取决于MultiTriggers
。您的案例中的TabControl
不存在,因此所有绑定都被破坏。这表明,更改'TabItem'的默认TabControl
也可以解决您的问题。
答案 2 :(得分:1)
虽然我没有使用我的开发机器,但我只能提供一个建议。对于您在标签项控件上想要的任何内容,为什么不将所有控件放在自定义用户控件或网格中,前提是您知道要将其添加到动态添加到标签页的标签控件中。
标签项需要正确的父标签控件才能在设计器中呈现它。但如果你将所有东西都作为标准控件构建,那么它就会像你期望的那样外观和操作。
然后在运行时添加标签项,然后将自定义控件添加到动态添加的标签项中,看看它是否适合您。您显然拥有所有其他组件/流程。即使你的样本控件只是一个标签,文本框或类似的东西。