【问题标题】:Custom control design - opening edit dialog responsibility自定义控件设计 - 打开编辑对话框责任
【发布时间】:2019-10-24 21:21:38
【问题描述】:

我有一个自定义日历控件,它显示选定时间段内的约会。

我想添加创建/编辑约会的功能。当我单击一天时,应打开约会编辑对话框(字段、保存按钮、取消按钮)。

谁应该负责打开编辑对话框?

  1. 控件是否应该负责打开对话框并且只有SaveCommandEditedAppointment 属性。

  2. 或者它是否应该像BeginEditCommand/DayClick event 这样只为用户公开命令/事件,而我的控件的用户必须自己实现对话框(而不仅仅是实现保存命令)?我认为DataGrid works that way

两种解决方案都可以,但哪个更好?

这是我在 WPF 中的第一个自定义控件,所以请原谅我的菜鸟问题。

【问题讨论】:

    标签: c# wpf xaml wpf-controls custom-controls


    【解决方案1】:

    如果不了解您的控件在总体方案中的位置,就无法确定,但对我来说,编辑和添加约会听起来像是应用程序的一部分,而不是简单的控件。

    控件往往擅长于一件不同的事情,并且可以在许多不同的场景中重复使用,因此需要灵活。如果应用程序想要以不同的方式设置约会编辑屏幕的皮肤怎么办?还是在完全不同的窗口中显示?或者允许一次编辑多个约会?

    如果您想让消费者轻松使用,您可以随时创建另一个控件来编辑约会,他们可以免费使用,并且他们可以在他们认为合适的时候使用它。不过老实说,这些东西感觉应该在应用程序中实现为适当的 MVVM,而不是作为自定义控件。

    【讨论】:

    • 如果我想要两种编辑模式怎么办?:快速编辑模式和完整编辑模式。我还需要将对话框与自定义控件中的特定控件对齐。我如何从外部访问该控件?看来它应该是我控制的一部分。
    • 快速编辑模式:将在已编辑的约会旁边打开一个小对话框。我需要使用ItemsContainerGenerator 访问与该约会相关的控件
    猜你喜欢
    • 2020-07-25
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多