我想向用户显示一个包含销售订单行的网格。在此网格中,用户可以在每条线路上输入金额。按下“保存”按钮时,将处理所有修改的行。
+---+------------+---------+---------+--------+------------------+
| # | PartNumber | Ordered | Shipped | Descr. | Quantity to ship |
+---+------------+---------+---------+--------+------------------+
| 1 | A12356 | 10 | 5 | Wheel | [ input field ] |
+---+------------+---------+---------+--------+------------------+
| 2 | B54556 | 10 | 0 | Frame | [ input field ] |
+---+------------+---------+---------+--------+------------------+
[PROCESS BUTTON]
因此,我们的想法是,用户可以一次性输入多行的发货金额,然后点击流程
到目前为止一切顺利。
我想要实现的是,用户可以单击此网格中的单元格。
我想在整个应用程序中重用这些通用内容元素。
(有许多不同的表,用户可以在其中单击PartNumber)
在查看PartNumber的详细信息时,已修改的输入字段,滚动位置等必须在主视图中保持不变(上面的表格)。
我的问题:
适合的设计策略是什么? 在WinForm中,我只需打开一个包含详细信息的新对话框。这似乎不适合UWP。
到目前为止,我想到了以下替代方案:
SplitView ,包含两个窗格:(1:Master)一个销售订单行页面和(2:详细信息)一个详细信息页面,其中(重新)设置内容取决于用户在哪一列点击次数。
ContentPresenter ,根据用户是否点击PartNumber或Shipped Qty等来重新设置内容
ContentDialog或ModalDialog 。
答案 0 :(得分:2)
"这似乎不适合UWP。"
我不明白为什么不会这样。您有很多选项,因此它更多地关于您希望UI流动的方式,而不是您正在使用的框架。我的经验是WPF ...使用适用。 如上所述,它实际上取决于您希望UI的外观以及您希望将多少工作放入其中。 在我的情况下,我希望我的组件(部件详细信息屏幕,以前的发货屏幕)完全独立于主机页面,并且不会干扰导航。使用模态对话窗口对我来说是一个不错的选择(但肯定不是唯一的选择)。
在我的应用程序中,我添加了一个名为Components的类库,它是表示层的一部分。我创建的组件我称之为选择器(CustomerSelector,PartSelector,OrderSelector ......),可以在我的应用程序中使用。选择器基本上是以模态状态打开的窗口。它显示搜索网格并将选择器上的属性设置为对象或对象集合,如果用户取消则为null。
// this handles a button click event
public async void SelectSeriesCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
SeriesSelector selector = new SeriesSelector(true, WatchListSeries);
bool? result = selector.ShowDialog(); // grid with search options is displayed in modal dialog window
if (result.HasValue && result.Value)
{
var series = selector.SelectedSeries; // use selected objects
}
}