如何以编程方式在c#中编码(不使用xaml)

如何以编程方式在c#中编码(不使用xaml),c#,.net,silverlight,xaml,silverlight-5.0,C#,.net,Silverlight,Xaml,Silverlight 5.0,我正在研究silverlight,我是初学者。我知道这个问题很基本,但因为我是初学者,我需要帮助来实现这一点。虽然我已经编写了xaml代码来创建GUI,但现在我必须使用c#来创建GUI,我的问题是: 我知道如何创建GUI,但我不知道如何渲染它 就像我知道如何创建滑块一样。我是这样做的: void createGrid() { Grid childGrid = new Grid(); ColumnDefinition colDef1

我正在研究silverlight,我是初学者。我知道这个问题很基本,但因为我是初学者,我需要帮助来实现这一点。虽然我已经编写了xaml代码来创建GUI,但现在我必须使用c#来创建GUI,我的问题是:

我知道如何创建GUI,但我不知道如何渲染它

就像我知道如何创建滑块一样。我是这样做的:

void createGrid()
        {
            Grid childGrid = new Grid();
            ColumnDefinition colDef1 = new ColumnDefinition();
            ColumnDefinition colDef2 = new ColumnDefinition();
            ColumnDefinition colDef3 = new ColumnDefinition();
            RowDefinition rowdef = new RowDefinition();
            childGrid.ColumnDefinitions.Add(colDef1);
            childGrid.RowDefinitions.Add(rowdef);


            Slider sl = new Slider();
            Grid.SetColumn(sl, 1);
            Grid.SetRow(sl, 0);
            childGrid.Children.Add(sl);

        }
public MainPage()
        {
            InitializeComponent();
            createGrid();
        }
但问题是如何渲染它。我的意思是我刚刚创建了一个名为“
NoMoreLife
”的项目,在我创建了这个函数
CreateGrid()
并从构造函数调用它之后,如下所示:

void createGrid()
        {
            Grid childGrid = new Grid();
            ColumnDefinition colDef1 = new ColumnDefinition();
            ColumnDefinition colDef2 = new ColumnDefinition();
            ColumnDefinition colDef3 = new ColumnDefinition();
            RowDefinition rowdef = new RowDefinition();
            childGrid.ColumnDefinitions.Add(colDef1);
            childGrid.RowDefinitions.Add(rowdef);


            Slider sl = new Slider();
            Grid.SetColumn(sl, 1);
            Grid.SetRow(sl, 0);
            childGrid.Children.Add(sl);

        }
public MainPage()
        {
            InitializeComponent();
            createGrid();
        }
我的主页类是:(其中包含代码)

MainPage.xaml是:

<UserControl x:Class="NoMoreLife.MainPage"
    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"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">    
    </Grid>
</UserControl>
我对函数的调用是:

namespace NoMoreLife
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            check.createGrid();           
        }        
    }
}
这里这个.Content=childGrid;给出了错误


注意:请注意,我必须用c#而不是xaml编写代码。您正在用代码创建一个
网格,但您没有用它做任何事情。通常,您可能希望将该网格作为表单的内容。尝试在
createGrid
方法的底部添加此行:

this.Content = childGrid;
编辑(回答问题中更新的代码):

由于您的代码位于窗口的单独类中,因此您可能希望改为执行以下操作:

  • 将方法
    createGrid
    void
    更改为返回
    childGrid

  • 在页面的构造函数中使用该方法的结果:

  • public主页()
    {
    初始化组件();
    this.Content=check.createGrid();
    
    }

    谁是“他们?”因为以这种方式编写UI是荒谬的,除非可能是作为学术练习……LayoutRoot.Children.Add(childGrid);将您以图形方式创建的chidlGrid添加到页面上的现有网格中。@user234839:那么,为什么您只需要用C语言编写代码?这是一种低效且不灵活的方式来构建WPF GUI…@DanPuzey只是为了获得编码经验。@user234839:如果你想练习编码,我建议你练习一些有意义且合理的东西。你不会为了有烹饪经验而试图用海绵蛋糕做家具!我的意思是:这不太可能是一次有价值的经历。是的,它奏效了。我会尽快将其标记为答案,因为我无法在10分钟内标记。感谢您的答案如果我有另一个类(而不是主页),那么我将如何呈现UI?因为“Content”和“LayoutRoot”不存在,如果我尝试添加此代码,则会出现未知错误,并且我缺少一些引用或程序集。感谢您的回答如果我有另一个类(而不是MainPage),那么我将如何呈现UI?因为“Content”和“LayoutRoot”不存在,如果我尝试添加此代码,则会出现错误,它们未知,我缺少一些参考或汇编,您需要共享您实际拥有的代码;给出的答案与您迄今为止共享的代码相匹配。如果您试图从窗口或控件外部构建UI,那么就不会那么容易(您需要将网格从该代码返回或传递到UI容器)。真的,这是一种可怕的创建UI的方法——我希望有一种更简单的方法来解决您的问题,即使用Xaml和模板。我刚刚为您编辑了代码。问题是我在已经存在的项目中有这样的情况,所以没有更多的选择