我制作了一个 WPF 应用程序,它可以根据用户交互打开连续的窗口。例如,第一个 winodw 询问用户想要在哪个模块上工作,当做出选择并按下按钮时,将打开一个新窗口,显示一些供应商和摘要计数。选择其中一个供应商并按下编辑按钮会打开另一个窗口,显示该供应商的详细信息。单击详细信息,然后单击按钮打开另一个窗口,用户可以在其中更改一些数字等。然后用户关闭该窗口,选择不同的项目并进行编辑,或关闭该窗口并选择不同的供应商等。每个窗口都有自己的当前查看模型。我想摆脱 window 的所有层。 Tab Control 似乎不是一个好的选择,因为用户必须通过正确的顺序等。将其更改为仅使用一个窗口并换出用户在一个窗口中看到的内容的最佳方法是什么例如,当他按下按钮进行编辑等时?
最佳答案
我个人更喜欢使用 <ContentControl />
对于我的内容区域,并根据用户当前的“窗口”换出事件内容
我有an example on my blog您可以查看,但基本组件如下所示:
View 模型:
ObservableCollection<IViewModel> AvailableScreens;
IViewModel ActiveScreen;
ICommand SetActiveScreenCommand;
使用一些如下所示的 XAML:
<ContentControl Content="{Binding ActiveScreen}" />
我通常使用DataTemplates
告诉 WPF 如何绘制每个 ViewModel
<Window.Resources>
<DataTemplate DataType="{x:Type local:ModulesViewModel}">
<local:ModulesView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:VendorsViewModel}">
<local:VendorView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:EditVendorViewModel}">
<local:EditVendorView />
</DataTemplate>
</Window.Resources>
关于c# - 将我的多窗口 WPF 应用程序转换为一个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15363877/