Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/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
WPF:如何处理多XAML UI?(后续行动)_Wpf_Xaml_Datagrid - Fatal编程技术网

WPF:如何处理多XAML UI?(后续行动)

WPF:如何处理多XAML UI?(后续行动),wpf,xaml,datagrid,Wpf,Xaml,Datagrid,这是我上一篇文章的延续: 建议的解决方案(再次感谢HighCore!!)非常重要,我将其添加到不断增长的代码库中。用户控件似乎适合于已完全调试和准备就绪的控件(如果愿意,可以使用只读库),因为没有提供可视化编辑 我需要添加两个新的XAML文件(一个用于左选项卡中的DataGrid,另一个用于右选项卡中的DataGrid)。我的main(调用者)XAML将非常简单,非常简单,也许我可以免除任何编辑: <Tab> <Tab Selection 1>

这是我上一篇文章的延续:

建议的解决方案(再次感谢HighCore!!)非常重要,我将其添加到不断增长的代码库中。
用户控件
似乎适合于已完全调试和准备就绪的控件(如果愿意,可以使用只读库),因为没有提供可视化编辑

我需要添加两个新的XAML文件(一个用于左选项卡中的DataGrid,另一个用于右选项卡中的DataGrid)。我的main(调用者)XAML将非常简单,非常简单,也许我可以免除任何编辑:

<Tab>
    <Tab Selection 1>
        <DataGrid 1 in some other XAML file>
    </Tab Selection 1>
    <Tab Selection 2>
        <DataGrid 2 in some other XAML file>
    </Tab Selection 2>
<Tab>

但是,我确实打算对从属(称为)XAML文件执行大量编辑,我需要图形设计器


TIA

你似乎从一个非常非常不恰当的角度来看待这一切

首先,如果您正在使用WPF,您真的需要忘记您可能从其他技术中学到的一切,并理解和接受它们

在WPF中,
UserControl
是一个可重用的、封装的、XAML定义的UI“部分”(您可以将其视为“小部件”)

UserControl由任意数量的UI元素组成:

  • 布局元素,如
    网格
    文件面板
    堆栈面板
    包装面板
  • 交互式用户界面元素,如
    文本框
    组合框
    复选框
    ,等等
  • 其他
    UserControl
    s
设计模式(*)中的视图概念通常以WPF中的
UserControl
s或
Window
s的形式具体化

*在用WPF编写一行代码之前,您应该阅读并了解这些内容


不过,我确实打算对下属进行大量编辑 (称为)XAML文件,我需要图形设计器

如果需要修改某个
UserControl
的布局,则必须修改包含它的XAML。您可以通过在VisualStudioWPF设计器中打开
MyUserControl.xaml
文件来选择这样做,但是这是出于我不想讨论(*)的原因

建议使用Visual Studio XAML编辑器窗口手动编辑XAML文件:

*链接中讨论了使用VisualStudio设计器创建WPF UI的优缺点


请注意,正如在“WPF心态”一文中所讨论的,创建WPF应用程序的思维过程与您在其他技术中所做的是相反的,在其他技术中,您首先定义UI,然后尝试根据UI调整逻辑和代码

在WPF中,通常首选一种方法,即定义数据模型,然后定义将公开UI中预期的数据和功能的
ViewModel
s,最后为UI创建XAML文件

这些XAML文件通常充满了数据,而不是在模型和UI之间手动传递数据的过程方法


底线:

要回答您的首要问题:是的,您在VisualStudio的WPF应用程序项目中定义了一些UserControl,通过编辑UserControl自己的XAML(与属于稍后将包含此UserControl的窗口的XAML相反)在UserControl级别定义UI,然后为该UserControl定义适当的ViewModel(这可以而且应该在编写任何XAML之前完成),然后在整个应用程序中重用该UserControl及其ViewModel

ViewModel可能适用于许多不同的视图(UserControl或Window),但视图通常需要特定的ViewModel并与之配合使用

您的解决方案资源管理器应与此类似:


其中,
MainViewModel
是主窗口的ViewModel,
MyViewModel
MyUserControl
视图的ViewModel。

我不明白这一点。为什么你说UserControls上没有可视化编辑?那是错误的。visual Studio
支持在可视化设计器中编辑用户控件。但是请注意,“为什么你说用户控件上没有可视化编辑?”我(又一次)感到困惑。我指的是CustomControl。有一段时间我认为它们是一样的。