【发布时间】:2022-07-15 17:33:59
【问题描述】:
在 WPF 中,我们有一个 Page 类,它允许我们在单个窗口中使用多页界面。在阿瓦洛尼亚怎么做?
【问题讨论】:
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
在 WPF 中,我们有一个 Page 类,它允许我们在单个窗口中使用多页界面。在阿瓦洛尼亚怎么做?
【问题讨论】:
您所描述的内容通常可以通过TabControl 解决。
每个选项卡都可以有一个TabViewModel 派生类实例作为其数据上下文进行绑定。
TabAViewModel : TabViewModel
{
}
TabBViewModel : TabViewModel
{
}
然后这些可以有自己的视图*.axaml 文件......所以在这种情况下TabAView.axaml 和TabBView.axaml。它们可以包含任意 UI。全屏内容或仅Path。
<UserControl>
...
</UserControl>
然后您可以收集TabControl 也绑定的那些,等等类似于MainViewModel.cs ...
MainViewModel : MyBaseViewModel
{
public ObservableCollection<TabViewModel> MyTabs { get; ... }
}
MainView.axal 然后看起来像这样。
<Window>
<TabControl Items={Binding MyTabs}>
<TabControl.DataTemplates>
<TabAView />
</TabControl.DataTemplates>
</TabControl>
</Window>
现在请注意。这是伪代码,但它解释了概念以及事物如何结合在一起。我已经在 WPF 和 Avalonia 中完成了这项工作。
为什么是伪代码?
根据您使用的框架,它们会彻底改变有关如何执行此操作的实现细节。
在Prism 中,您需要实现RegionAdaptor,在Avalonia 中,您可能需要DataTemplateSelector 将Views 连接到ViewModels,在WPF 中,这或多或少是可行的.
无论哪种方式,这个概念都是有效的。
【讨论】: