从XAML生成C#代码

时间:2014-03-11 06:47:33

标签: c# wpf xaml

在我目前的项目中,我已经在C#中动态制作UI。这可能是一项非常无聊和困难的任务。那么有一个工具可以生成XAML UI标记的C#代码吗?

例如,我在XAML中有网格

    <Grid  >
        <Grid.RowDefinitions>
            <RowDefinition  />
            <RowDefinition  />
        </Grid.RowDefinitions>
    </Grid>

我希望将它转换为

 Grid grdTextField = new Grid();
 RowDefinition firstrow = new RowDefinition();
 RowDefinition secondrow = new RowDefinition();

这是一个简单的案例,但是对于一点点复杂的UI来说,很难从Code背后制作。

编辑: -

实际上我得到一个Json来确定我的大网格是如何创建的。它有六到七种类型的复杂视图,这些视图可以多次出现(因此必须在运行时放置一些逻辑)。所以 总的来说,我必须在这个json的基础上制作网格。

编辑2: - 这是json的一部分,基于此我必须制作一个UI

 "decimal_variables": [
            {
                "id": 1, 
                "name": "Time Taken", 
                "var_type": 2, 
                "is_required": true, 
                "default": null, 
                "max_value": "10000.000000", 
                "min_value": "0.000000", 
                "unit": "sec", 
                "score_dependency": 2
            }, 
            {
                "id": 2, 
                "name": "Number of moves", 
                "var_type": 2, 
                "is_required": true, 
                "default": null, 
                "max_value": "1000.000000", 
                "min_value": "0.000000", 
                "unit": "moves", 
                "score_dependency": 2
            }, 
            {
                "id": 3, 
                "name": "Number of hints used", 
                "var_type": 2, 
                "is_required": true, 
                "default": null, 
                "max_value": "100.000000", 
                "min_value": "0.000000", 
                "unit": "hints", 
                "score_dependency": 2
            }
        ], 
        "choice_variables": [
            {
                "choices": [
                    {
                        "id": 1, 
                        "name": "Easy", 
                        "value": "1.000000"
                    }, 
                    {
                        "id": 2, 
                        "name": "Medium", 
                        "value": "2.000000"
                    }, 
                    {
                        "id": 3, 
                        "name": "Tough", 
                        "value": "3.000000"
                    }
                ], 
                "id": 1, 
                "name": "Difficulty level", 
                "var_type": 1, 
                "is_required": true, 
                "default": null, 
                "score_dependency": 3
            }
        ], 
        "boolean_variables": [
            {
                "id": 1, 
                "name": "Is Hint Allowed", 
                "var_type": 1, 
                "default": true, 
                "score_dependency": 3
            }
        ], 
        "text_variables": [
            {
                "id": 1, 
                "name": "Instructions to student", 
                "var_type": 1, 
                "is_required": false, 
                "default": "1. Carefully do the assignment.\r\n2. Time is key in assignment score, so make sure not to waste the time.", 
                "max_length": 1000, 
                "score_dependency": 3
            }
        ], 
        "file_variables": [
            {
                "default": "media/variable-files/supermegafunbits-1024x1024.png", 
                "id": 1, 
                "name": "Image", 
                "var_type": 1, 
                "is_required": false, 
                "file_type": "image/jpeg,image/png", 
                "score_dependency": 3
            }
        ], 

现在用于文件变量我必须制作一个包含图像控件的UI,用于浏览图像的按钮,标题TextBlock和信息TextBlock(可能很复杂)。所以我正在寻找一个工具,如果我从xaml创建一个UI可以很多时间转换为C#代码,并且可以保存不必要的编码。

1 个答案:

答案 0 :(得分:0)

为什么需要在代码中创建它?您可以创建DataTemplate。创建一个View和ViewModel,它将给出视图的逻辑。在ViewModel中,您可以设置,获取,隐藏,修改视图。

我建议阅读这篇文章:

MVVM in Depth

WPF/MVVM Quick Start Tutorial

问候!