如何用c#编程编写代码(不使用xaml)

本文关键字:xaml 代码 何用 编程 | 更新日期: 2023-09-27 18:05:28

我正在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);
        }

但问题是如何渲染它。我的意思是,我刚刚创建了一个名为"NoMoreLife"的项目,然后创建了这个函数CreateGrid(),并从构造函数中调用它,像这样:

public MainPage()
        {
            InitializeComponent();
            createGrid();
        }

我的MainPage类是:(包含代码)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace NoMoreLife
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            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);
        }
    }
}

和主页。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>

我应该如何渲染这个滑块创建,我已经创建使用c#?因为目前当我运行程序时,我什么也没看到(没有滑块)。

编辑:在Dan的评论之后:

我已经在我的项目中添加了check.cs类,现在这个类包含代码:

namespace NoMoreLife
    {
        public static class check
        {
            public static 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.ColumnDefinitions.Add(colDef2);
                childGrid.ColumnDefinitions.Add(colDef3);
                childGrid.RowDefinitions.Add(rowdef);
                Slider sl = new Slider();
                Grid.SetColumn(sl, 1);
                Grid.SetRow(sl, 1);
                childGrid.Children.Add(sl);
               // LayoutRoot.Children.Add(childGrid);
                this.Content = childGrid;
            }
        }
    }

我对函数的调用是:

namespace NoMoreLife
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            check.createGrid();           
        }        
    }
}

这里。内容= childGrid;给错误。

注意:请注意,我必须在c#中编写代码,而不是在xaml中。

如何用c#编程编写代码(不使用xaml)

您正在代码中创建Grid,但您没有使用它做任何事情。通常,您可能希望将该网格包含在表单的内容中。尝试在createGrid方法的底部添加这一行:

this.Content = childGrid;

EDIT(响应问题中更新的代码):

由于您的代码位于与窗口不同的类中,因此您可能希望这样做:

  1. createGrid方法从void更改为返回childGrid

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

public MainPage() { InitializeComponent(); this.Content = check.createGrid(); }