Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF应用程序中提供模板功能-如何?_C#_Wpf_Templates - Fatal编程技术网

C# 在WPF应用程序中提供模板功能-如何?

C# 在WPF应用程序中提供模板功能-如何?,c#,wpf,templates,C#,Wpf,Templates,我有一个梦想: 我正在开发一个笔记应用程序,每个人都可以在其中存储笔记并标记它们。现在,如果用户可以将该应用程序用于多种用途,那就太好了:书店信息、食谱、清单等等 这里我们有一个图书信息模板。我可以想象在标题框下面有一个模板选择器,您可以在其中选择一个模板以有组织的方式输入信息。但是我被卡住了 您将如何实际“加载”或“创建”这样的模板 您将如何存储输入的数据 如何在文本字段中启用基本格式选项 最后:我需要一个不可编辑的概述模板,其中填充了在编辑模式下输入的数据 我知道,这不是一个容易的问题

我有一个梦想:

我正在开发一个笔记应用程序,每个人都可以在其中存储笔记并标记它们。现在,如果用户可以将该应用程序用于多种用途,那就太好了:书店信息、食谱、清单等等

这里我们有一个图书信息模板。我可以想象在标题框下面有一个模板选择器,您可以在其中选择一个模板以有组织的方式输入信息。但是我被卡住了

  • 您将如何实际“加载”或“创建”这样的模板
  • 您将如何存储输入的数据
  • 如何在文本字段中启用基本格式选项
  • 最后:我需要一个不可编辑的概述模板,其中填充了在编辑模式下输入的数据

我知道,这不是一个容易的问题,但也许有一些不错的想法

您可以使用反射和自定义属性

我在wp7应用程序中实现了类似的功能(但没关系,xaml在任何地方都是xaml)

其想法是创建可以显示任何实体的超级视图(控件)。为每个表示此实体的实体类创建,并将自定义属性添加到此类的属性(告诉super view如何显示实体) 超级视图应该分析这些属性并构造视图

这是:

我希望这些信息对您有所帮助。

好的

显然,实现我想要的东西非常简单:如果在控件中输入任何内容,如果使用XamlWriter,它将被序列化。我可以存储序列化的Xaml,并在加载便笺时将其读回。最后,用户将得到一个文件,在其中输入一些标记,如:

<CheckBox >test</CheckBox>
<Label>Huhu</Label>
<TextBox Foreground="Gray">This is a test...</TextBox>
<Label>Huhu</Label>
<TextBox Foreground="Gray">This is a test...</TextBox>
测试
呼呼
这是一个测试。。。
呼呼
这是一个测试。。。
在编辑屏幕中,整个标记将用其值序列化


但是,这有一个缺点,即在指定模板后无法更改模板,或者在基本模板更改时无法更改布局。也许我会想到如何实现这一点。

您是否提前知道模板的“范围”或者是否应该允许用户创建新模板?您需要为每个实体(书籍、注释等)创建一个模板还是多个模板?用户可以创建新的实体吗?我认为
ContentControl.ContentTemplate
ContentControl.Content
DataTemplate.DataType
和MVVM将为您提供您想要的东西@不,用户应该能够创建新模板。感谢您嵌入此图像。:)@Ivan Benko不,我需要每个实体一个模板。我仍在寻找一个智能解决方案来保存所有内容。好的,那么您将创建一个自动使用实体的视图。这是一个非常好的主意!:)然而,这将使普通用户很难创建自己的模板。也许我应该在运行时通过XAMLReader加载XAML模板,并且-当用户保存它时-序列化整个模板,包括它的值。@DanielGilbert,在我的项目中,我使用它编辑简单对象,而不为它创建许多XAML页面(例如用户设置)。这是你唯一的想法,而不是解决方案。没关系,正如我已经说过的,它非常漂亮和聪明。真的但我想,这对于一个普通的终端用户来说太复杂了。我会再做一点头脑风暴。。。