gpt4 book ai didi

c# - 动态创建文本框 MVVM?

转载 作者:行者123 更新时间:2023-11-30 14:57:20 28 4
gpt4 key购买 nike

我可以在 C# 代码中动态创建文本框,我已经实现了,但是人们一直说我需要遵循 MVVM 模式,我调查了一下,这似乎真的很难,我就是不习惯。

我需要动态创建文本框,将文本框中的信息保存到 SQL 中,然后才能重新打开它。

这是一张描述我需要做什么的图片:

enter image description here

是否可以在不使用 MVVM 模式的情况下做到这一点?

只需要一点启动和解释我如何做到这一点,我不想提供所有代码。

编辑1:

不知道对不对

我创建了一个名为“标准”的类,如下所示:

namespace MVVModel
{
public class Standard
{

string _title;
string _question;



public string Title
{
get { return _title; }
set { _title = value; }
}

public string Question
{
get { return _question; }
set { _question = value; }
}
}
}

现在我要创建一个 ViewModel?这里面需要什么?

最佳答案

你可以使用

<ItemsControl ItemsSource="{Binding StandardCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type Standard}">
<Grid>
<TextBox Text={Binding Title} />
<ItemsControl ItemsSource="{Binding Questions}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text={Binding} />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

它绑定(bind)到您的 viewModel 中的任何集合。

您可以根据需要在集合中添加任意数量的项目。

更新:

public class Standard
{
string _title;
ObservableCollection<string> _questions;

public string Title
{
get { return _title; }
set {
_title = value;
NotifyOfPropertyChanged(()=>Title);
}
}

public ObservableCollection<string> Questions
{
get { return _questions; }
set {
_questions = value;
NotifyOfPropertyChanged(()=>Questions);
}
}
}

public class StandardViewModel
{
private ObservableCollection<Standard> _standardCollection;
public ObservableCollection<Standard> StandardCollection{
get
{
return _standardCollection;
}
set{
_standardCollection = value;
NotifyOfPropertyChanged(()=>StandardCollection);
}
}
}

查看您的图表 1:您似乎对每个标题都有多个问题。所以这是解决方案。

是的,您将需要 Standard 类来简化它。

抱歉,我现在没有 Visual Studio,我只是用记事本写了这段代码,然后粘贴到这里。不确定错误。但只是高层次的想法。

关于c# - 动态创建文本框 MVVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20948160/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com