我正在研究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);
}
}
}
和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>
如何渲染此滑块创建使用c#创建的?因为当前运行程序时我什么都没看到(没有滑块)。
编辑:丹的评论之后:我在项目中添加了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();
}
}
}
here this.Content = childGrid;给出错误。
注意:请注意,我必须在c#中编码,而不是在xaml中。
答案 0 :(得分:3)
您正在代码中创建Grid
,但您没有对其进行任何操作。通常,您可能希望将该网格包含为表单的内容。尝试在createGrid
方法的底部添加此行:
this.Content = childGrid;
编辑(响应问题中的更新代码):
由于您的代码位于窗口的单独类中,因此您可能希望这样做:
将您的方法createGrid
从void
更改为childGrid
在页面的构造函数中使用方法的结果:
public MainPage()
{
InitializeComponent();
this.Content = check.createGrid();
}