C# 我可以在C中的按钮中存储一个对象吗#

C# 我可以在C中的按钮中存储一个对象吗#,c#,wpf,object,button,C#,Wpf,Object,Button,我在代码中动态创建按钮,有没有办法在按钮中存储自定义对象,以便在按下此按钮时使用它?您可以使用,但在获取对象时需要强制转换。考虑使用命令模式,将命令绑定到按钮,并使用来存储对象 单击按钮时,将使用CommandParameter(包含对象)作为参数来调用命令的Execute方法 了解您正在处理的场景会很好。通过代码生成XAML是一种迹象,表明您可能走错了方向,只要您没有构建自定义控件 大多数事情都可以通过数据绑定和转发器控件(如列表框、菜单、数据网格等)来完成。您熟悉MVVM模式吗?可以通过声明

我在代码中动态创建按钮,有没有办法在按钮中存储自定义对象,以便在按下此按钮时使用它?

您可以使用,但在获取对象时需要强制转换。

考虑使用命令模式,将命令绑定到按钮,并使用来存储对象

单击按钮时,将使用
CommandParameter
(包含对象)作为参数来调用命令的
Execute
方法

了解您正在处理的场景会很好。通过代码生成XAML是一种迹象,表明您可能走错了方向,只要您没有构建自定义控件


大多数事情都可以通过数据绑定和转发器控件(如列表框、菜单、数据网格等)来完成。您熟悉MVVM模式吗?

可以通过声明方式(通过绑定到
标记或其他未使用的字段)来完成,但是,如果您动态创建按钮,一种不那么麻烦的方法是简单地创建一个
字典
映射,它存储每个按钮所需的对象。

您也可以使用一个。

您还可以继承按钮并将您的类放在那里…

我也使用它,但我需要为每个存储一个唯一的对象button@raym0nd:你看,还有一个。它可能正是针对该用例而存在的。为什么需要存储对象?如果使用命令模式,则可以通过实现简单的
ICommand
界面来创建自定义命令。这个类可以包装所有需要的功能,并且可以使用您的对象进行初始化。@Zebi:虽然给出一些外围建议可能是个好主意,但这不应该是您回答的重点(因为它是粗体的),相反,我建议您在回答中提及CommandParameter,因为这实际上回答了如何在按钮中存储对象的问题。@H.B:是的,但OP应该做什么:-)可以这样做,但使用这种方法会忽略广泛推荐的WPF模式(以及最现代的模式)图形用户界面开发。@EricJ:我想我会推荐做一些事情的方法,我想,这不会太混乱。在这种情况下,你最好创建一个基本上做相同事情的附加属性。这实际上比使用标记或任何其他字段要好,因为使用它们是有限制的,不是很多,但仍然是。没错,标记有点混蛋,没有太多存在的理由。可能是为了方便?(我现在实际上添加了我的评论作为另一个答案:P)