这是我之前的帖子的延续:
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
答案 0 :(得分:1)
你似乎从一个非常非常不充分的角度来接近这一切。
首先,如果你正在使用WPF,你真的需要忘记从其他技术中学到的所有内容,并理解并拥抱The WPF Mentality。
在WPF中,UserControl
是一个可重用,封装,XAML定义的UI“(您可以将其视为”小部件“)。
UserControl由任意数量的UI元素组成:
Grid
,DockPanel
,StackPanel
,WrapPanel
等。TextBox
,ComboBox
,CheckBox
等UserControl
s。 MVVM设计模式(*)中查看的概念通常在WPF中以UserControl
或Window
的形式实现。
*在你在WPF中编写一行代码之前,你应该阅读和学习。
但是,我确实打算对下属进行大量编辑 (称为)XAML文件,我需要图形设计器。
如果您需要修改某个UserControl
的布局,则必须修改包含它的XAML。您可以通过在Visual Studio WPF设计器中打开MyUserControl.xaml
文件来选择这样做,但是highly discouraged是因为我不会进入(*)的原因。
建议的方法是使用Visual Studio XAML编辑器窗口手动编辑XAML文件:
*链接中讨论了使用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。
您的解决方案资源管理器应与此类似:
其中MainViewModel
是MainWindow的ViewModel,而MyViewModel
是MyUserControl
视图的ViewModel。