1

我还是 C# 的新手,我正在开发一个项目,我们还使用 WPF 和 WPF DataGrid Toolkit(参见 CodePlex),它尚未发布到框架中。由于项目的性质,100% 确定我们稍后会更改装配的一些控制。我的同事决定在我们项目的命名空间内重新定义数据网格中的每个控件,并重新定义程序集命名空间的特定控件。所以不要使用: clr-namespace:Microsoft.Windows.Controls.Primitives;assembly=WPFToolkit clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit 我们将使用我们自己的 xxx.Controls 和 xxx.Controls.Primitives 命名空间. 这样,更改 ihnerited 控件将非常容易。

不知何故,我对这个解决方案有一种不好的 感觉,但我仍然缺乏经验,无法判断这种方法是否合法,或者是否有其他好的解决方案来满足我们的要求(稍后更改控件而不更改太多代码多个文件)。

如果您对这种方法发表意见,那就太好了。

4

2 回答 2

1

你在说什么样的改变?在您知道实际需要更改的内容之前先从每个类派生似乎是浪费时间。

当您确实需要更改某些内容时,此时创建派生类并修复任何引用应该不会太难 - 这可能仅适用于某些实例而不是所有实例。是的,这可能意味着签入涉及相当多的文件 - 但如果您使用的是合理的源代码控制系统,这将是一个原子更改,并且很明显为什么会发生更改。

使用您当前的方法,没有立即“这些是我们必须更改的控件” - 如果您以“及时”的方式进行操作,您只需查看哪些派生控件即可判断你实际上必须创造。

于 2008-12-05T10:07:29.310 回答
0

我同意你的看法。改变,或者更好地说,改变,可以是任何种类的。行为等。并且应该及时做出改变。不幸的是,这不是我的决定。一些固执的人在工作:)

但令我感兴趣的是,是否存在对整个想法完全不同的方法?比如说,我有一个 DataGrid,项目正在发展,现在,我必须对 dataGrid 行的验证行为进行一些重大更改。这也适用于许多控件。

我们项目的问题是,我们有一种复杂的数据访问层,它不仅提供数据,而且实际上控制它。这意味着在不包含数据访问层提供的一些逻辑的情况下,不会读取、修改、删除或附加数据。

例如,数据网格不直接删除行,而是覆盖删除行为并请求数据访问层将其删除。使用绑定,这目前工作得很好。这种场景将适用于未来的许多其他事情,关于 CRUD 操作、验证等。

于 2008-12-05T10:29:54.070 回答