C# 以编程方式设置选项卡的内容

C# 以编程方式设置选项卡的内容,c#,.net,wpf,C#,.net,Wpf,我有一个WPF应用程序,我希望以编程方式显示内容。但当我尝试按特定顺序执行此操作时,它无法显示 这很有效 public partial class MainWindow : Window { private static GX3Logger logger = GX3Logger.GetLogger(); private GX3ClientMain.GX3ClientMain clientMain = null; /// <summa

我有一个WPF应用程序,我希望以编程方式显示内容。但当我尝试按特定顺序执行此操作时,它无法显示

这很有效

public partial class MainWindow : Window
    {
        private static GX3Logger logger = GX3Logger.GetLogger();
        private GX3ClientMain.GX3ClientMain clientMain = null;

        /// <summary>
        ///  Main method
        /// </summary>
        /// <param name="args">
        ///  Application args
        /// </param>
        /// 
        public MainWindow()
        {
            InitializeComponent();
            Button btn = new Button();
            btn.Content = "Moo";
            btn.Height = 100;
            btn.Width = 100;
            stackPanel1.Children.Add(btn);
        }



        public int Initialise(string[] args)
        {
        ........
        }
}
公共部分类主窗口:窗口
{
私有静态GX3Logger=GX3Logger.GetLogger();
私有GX3ClientMain.GX3ClientMain clientMain=null;
/// 
///主要方法
/// 
/// 
///应用程序参数
/// 
/// 
公共主窗口()
{
初始化组件();
按钮btn=新按钮();
btn.Content=“Moo”;
btn.高度=100;
btn.宽度=100;
stackPanel1.Children.Add(btn);
}
公共int初始化(字符串[]args)
{
........
}
}
这并不重要

public partial class App : Application
    {
        void app_Startup(object sender, StartupEventArgs e)
        {
            MainWindow mw = new MainWindow();
            mw.Initialise(e.Args);

        }
    }

public partial class MainWindow : Window
    {
        private static GX3Logger logger = GX3Logger.GetLogger();
        private GX3ClientMain.GX3ClientMain clientMain = null;

        /// <summary>
        ///  Main method
        /// </summary>
        /// <param name="args">
        ///  Application args
        /// </param>
        /// 
        public MainWindow()
        {
            InitializeComponent();            
        }



        public int Initialise(string[] args)
        {
            Button btn = new Button();
            btn.Content = "Moo";
            btn.Height = 100;
            btn.Width = 100;
            stackPanel1.Children.Add(btn);
            .......
        }
}
公共部分类应用程序:应用程序
{
无效应用程序启动(对象发送器、StartupEventArgs e)
{
主窗口mw=新的主窗口();
mw.初始化(e.Args);
}
}
公共部分类主窗口:窗口
{
私有静态GX3Logger=GX3Logger.GetLogger();
私有GX3ClientMain.GX3ClientMain clientMain=null;
/// 
///主要方法
/// 
/// 
///应用程序参数
/// 
/// 
公共主窗口()
{
初始化组件();
}
公共int初始化(字符串[]args)
{
按钮btn=新按钮();
btn.Content=“Moo”;
btn.高度=100;
btn.宽度=100;
stackPanel1.Children.Add(btn);
.......
}
}

为什么不呢?

您需要在选项卡项中放置StackPanel

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
        <TabControl>
            <TabItem Name="tab1">
                <StackPanel Name="stackPanel1">

                </StackPanel>
            </TabItem>
        </TabControl>
</Window>

然后是代码隐藏

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Button btn = new Button();
            btn.Content = "Moo";
            stackPanel1.Children.Add(btn);
            Button btn2 = new Button();
            btn2.Content = "test";
            stackPanel1.Children.Add(btn2);

        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
        }
    }
}
命名空间WpfApplication1
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
按钮btn=新按钮();
btn.Content=“Moo”;
stackPanel1.Children.Add(btn);
按钮btn2=新按钮();
btn2.Content=“测试”;
stackPanel1.Children.Add(btn2);
}
已加载私有无效窗口(对象发送器、路由目标)
{
}
}
}

@user589195,它似乎工作正常,让我添加完整的XAML和代码behind@user589195在代码中添加按钮的位置,应该在初始化Component之后确定问题是我在哪里调用它。现在更新问题:)我需要重画表单还是什么?这不是使用MVVM的小事。花点时间学习一下模式。