Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有选项卡项的用户控件没有';不显示_C#_Wpf_User Controls_Tabcontrol_Tabitem - Fatal编程技术网

C# 带有选项卡项的用户控件没有';不显示

C# 带有选项卡项的用户控件没有';不显示,c#,wpf,user-controls,tabcontrol,tabitem,C#,Wpf,User Controls,Tabcontrol,Tabitem,我有我的UserControltable选项卡。在我的应用程序中,我有一个TabControl,我想在运行时通过一个按钮将我的table添加到我的TabControl。问题是它没有显示布局,只是显示灰色。只有在我将TabControl直接添加到我的TabItem时,它才起作用。它是否必须在运行时添加控件,或者为什么不能正确显示布局 table.xaml <UserControl x:Class="RestaurantManagmentSystemProject.TableTab"

我有我的
UserControl
table选项卡。在我的应用程序中,我有一个
TabControl
,我想在运行时通过一个按钮将我的table添加到我的
TabControl
。问题是它没有显示布局,只是显示灰色。只有在我将
TabControl
直接添加到我的
TabItem
时,它才起作用。它是否必须在运行时添加控件,或者为什么不能正确显示布局

table.xaml

<UserControl x:Class="RestaurantManagmentSystemProject.TableTab"
         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" 
         xmlns:local="clr-namespace:RestaurantManagmentSystemProject"
         Name="TableTabItem"
         mc:Ignorable="d" 
         d:DesignHeight="450" d:DesignWidth="800">

<TabItem Name="Tab" Header="{Binding TabItemHeader, ElementName=TableTab}">
    <DockPanel>
        <Grid DockPanel.Dock="Top" Margin="5">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <DataGrid Grid.Column="0">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Order number"/>
                    <DataGridTextColumn Header="Customer"/>
                    <DataGridTextColumn Header="Total Price"/>
                    <DataGridComboBoxColumn Header="Urgency"/>
                </DataGrid.Columns>

            </DataGrid>

            <StackPanel Grid.Column="1">
                <Label Content="Maximum Seats:"/>
                <Label Content="Current connections:"/>
            </StackPanel>

            <DockPanel Grid.Column="2" LastChildFill="False" HorizontalAlignment="Right">
                <Button Name="BtnEditTable" Content="Edit Table" DockPanel.Dock="Top"/>
            </DockPanel>
        </Grid>

        <TabControl Margin="5,0,0,0">

        </TabControl>
    </DockPanel>
</TabItem>
在这里,我将TableTab添加到现有的
TabControl

TableTab t = new TableTab();
t.TabItemHeader = "Tab1";

m.TabContTables.Items.Add(t);

编辑:

main窗口m;

表格选项卡
应该是
选项卡项
,而不是
用户控件
。只需更改基本类型:

public partial class TableTab : TabItem
{
    public static readonly DependencyProperty TableIdProperty;
    public static readonly DependencyProperty TabItemHeaderProperty;

    public TableTab()
    {
        InitializeComponent();
        TabItemHeader = "head";
    }

    static TableTab()
    {
        TableIdProperty = DependencyProperty.Register("TableId", typeof(int), typeof(TableTab));
        TabItemHeaderProperty = DependencyProperty.Register("TabItemHeader", typeof(string), typeof(TableTab));
    }

    public int TableId
    {
        get { return (int)GetValue(TableIdProperty); }
        set { SetValue(TableIdProperty, value); }
    }

    public string TabItemHeader
    {
        get { return (string)GetValue(TabItemHeaderProperty); }
        set { SetValue(TabItemHeaderProperty, value); }
    }
}
XAML:

<TabItem x:Class="RestaurantManagmentSystemProject.TableTab" 
             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" 
             Name="Tab"
             Header="{Binding TabItemHeader, RelativeSource={RelativeSource Self}}"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <DockPanel>
        <Grid DockPanel.Dock="Top" Margin="5">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <DataGrid Grid.Column="0">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Order number"/>
                    <DataGridTextColumn Header="Customer"/>
                    <DataGridTextColumn Header="Total Price"/>
                    <DataGridComboBoxColumn Header="Urgency"/>
                </DataGrid.Columns>

            </DataGrid>

            <StackPanel Grid.Column="1">
                <Label Content="Maximum Seats:"/>
                <Label Content="Current connections:"/>
            </StackPanel>

            <DockPanel Grid.Column="2" LastChildFill="False" HorizontalAlignment="Right">
                <Button Name="BtnEditTable" Content="Edit Table" DockPanel.Dock="Top"/>
            </DockPanel>
        </Grid>

        <TabControl Margin="5,0,0,0">

        </TabControl>
    </DockPanel>
</TabItem>


什么是
m
TabContTables
m
是一个窗口,
TabContTables
是选项卡控件,我想将选项卡添加到
tabtable
应该是一个
TabItem
而不是
UserControl
。但我希望它是一个用户控件,这样我就有了那个布局,可以通过几行代码添加它我的tabcontrol代码你仍然可以这样做。只需更改控件的基本类型。看看我的答案。
public partial class TableTab : TabItem
{
    public static readonly DependencyProperty TableIdProperty;
    public static readonly DependencyProperty TabItemHeaderProperty;

    public TableTab()
    {
        InitializeComponent();
        TabItemHeader = "head";
    }

    static TableTab()
    {
        TableIdProperty = DependencyProperty.Register("TableId", typeof(int), typeof(TableTab));
        TabItemHeaderProperty = DependencyProperty.Register("TabItemHeader", typeof(string), typeof(TableTab));
    }

    public int TableId
    {
        get { return (int)GetValue(TableIdProperty); }
        set { SetValue(TableIdProperty, value); }
    }

    public string TabItemHeader
    {
        get { return (string)GetValue(TabItemHeaderProperty); }
        set { SetValue(TabItemHeaderProperty, value); }
    }
}
<TabItem x:Class="RestaurantManagmentSystemProject.TableTab" 
             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" 
             Name="Tab"
             Header="{Binding TabItemHeader, RelativeSource={RelativeSource Self}}"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <DockPanel>
        <Grid DockPanel.Dock="Top" Margin="5">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="2*"/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>

            <DataGrid Grid.Column="0">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Order number"/>
                    <DataGridTextColumn Header="Customer"/>
                    <DataGridTextColumn Header="Total Price"/>
                    <DataGridComboBoxColumn Header="Urgency"/>
                </DataGrid.Columns>

            </DataGrid>

            <StackPanel Grid.Column="1">
                <Label Content="Maximum Seats:"/>
                <Label Content="Current connections:"/>
            </StackPanel>

            <DockPanel Grid.Column="2" LastChildFill="False" HorizontalAlignment="Right">
                <Button Name="BtnEditTable" Content="Edit Table" DockPanel.Dock="Top"/>
            </DockPanel>
        </Grid>

        <TabControl Margin="5,0,0,0">

        </TabControl>
    </DockPanel>
</TabItem>