WPF:如何处理多XAML UI? (跟进)

时间:2013-12-07 17:10:35

标签: wpf xaml datagrid

这是我之前的帖子的延续:

WPF: How to handle multi-XAML UIs?

建议的解决方案(再次感谢,HighCore !!)很重要,我将它添加到我不断增长的编码库中。 User Control似乎适用于完全调试并准备好的控件(如果愿意,只读库),因为没有提供可视化编辑。

我需要的是添加一些新的XAML文件(一个用于我左侧选项卡中的DataGrid,另一个用于右侧选项卡中的DataGrid)。我的主要(来电)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

1 个答案:

答案 0 :(得分:1)

你似乎从一个非常非常不充分的角度来接近这一切。

首先,如果你正在使用WPF,你真的需要忘记从其他技术中学到的所有内容,并理解并拥抱The WPF Mentality

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

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

  • 布局元素,例如GridDockPanelStackPanelWrapPanel等。
  • 交互式用户界面元素,例如TextBoxComboBoxCheckBox
  • Custom Controls
  • 其他UserControl s。

MVVM设计模式(*)中查看的概念通常在WPF中以UserControlWindow的形式实现。

*在你在WPF中编写一行代码之前,你应该阅读和学习。


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

如果您需要修改某个UserControl的布局,则必须修改包含它的XAML。您可以通过在Visual Studio WPF设计器中打开MyUserControl.xaml文件来选择这样做,但是highly discouraged是因为我不会进入(*)的原因。

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

enter image description here

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


请注意,正如“WPF Mentality”帖子中所讨论的,创建WPF应用程序的思维过程与您在其他技术中所做的相反,您首先定义UI,然后尝试使您的逻辑和代码适应UI。

在WPF中,通常首选ViewModel-First方法,您可以在其中定义数据模型,然后定义将公开UI中预期的数据和功能的ViewModel,最后创建用户界面的XAML文件。

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


底线:

回答您的首要问题:是的,您在Visual Studio中的WPF应用程序项目中定义了一些UserControl,通过编辑UserControl自己的XAML来定义UserControl级别的UI(而不是属于Window的XAML)稍后包含此UserControl),然后为该UserControl定义一个正确的ViewModel(这可以而且应该在编写任何XAML之前完成),然后在整个应用程序中将该UserControl与它的ViewModel一起重用。

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

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

enter image description here

其中MainViewModel是MainWindow的ViewModel,而MyViewModelMyUserControl视图的ViewModel。