【发布时间】:2014-05-28 13:08:20
【问题描述】:
我正在研究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();
}
}
}
这里 this.Content = childGrid;给出错误。
注意:请注意,我必须在 c# 中编写代码,而不是在 xaml 中。
【问题讨论】:
-
“他们”是谁?因为以这种方式编写 UI 是荒谬的,除非是作为学术练习......
-
LayoutRoot.Children.Add(childGrid);会将您以实用方式创建的 chidlGrid 添加到页面上现有的 Grid 中。
-
@user234839:那么,为什么你必须只用 C# 编写代码?这是构建 WPF GUI 的一种低效且不灵活的方式...
-
@DanPuzey 只是为了获得编码经验。
-
@user234839:如果你想练习编码,我建议你练习一些有意义和明智的事情。您不会尝试用海绵蛋糕制作家具来获得烹饪经验!我的意思是:这不太可能是一次宝贵的经历。
标签: c# .net silverlight xaml silverlight-5.0