银光中的点击编辑

5
有没有办法在Silverlight中制作一个“点击编辑”控件?我有一些项目将显示在TreeView控件中,我希望标签可以直接在TreeView中进行编辑。
有人知道如何做到这一点吗?

1
该链接 https://dev59.com/_3I95IYBdhLWcg3w7SlZ#7687402 提供了单击以编辑用户控件。希望这有所帮助。 - Youngjae
1个回答

9
其实很简单。我已经使用此类交换机制实现了许多表单。 您可以使用Converter,并针对绑定到TreeView的实体上存在的IsEditable属性执行简单的BooleanToVisibility转换。在TreeView ItemTemplate中,只需以这样的方式绑定TextBlock,即当IsEditable属性为true时折叠,以这样的方式绑定TextBox,即当IsEditable属性为false时折叠(反之亦然)。
如果您想要构建自定义ClickToEdit控件,则需要执行以下操作: 1.创建从ContentControl继承的类。 2.公开类型为DataTemplate的新依赖属性:一个名为EditableTemplate。 3.添加MouseLeftButtonUp事件处理程序到你的OnApplyTemplate内以监听点击事件。 4.更改点击事件时活动内容模板为EditableTemplate。 5.控件失去焦点时更改模板。
现在,在TreeView中使用您的自定义控件: 1.覆盖您的TreeView ItemTemplate。 2.将您的自定义ClickToEdit控件放置在其中。
实现自定义控件允许您(或其他开发人员)轻松指定他们想要用作内容编辑器的控件。例如,他们可以指定NumericUpDown或DateTimePicker而不仅仅是使用TextBox。
请查看Silverlight 3中的DataForm。它具有类似的功能,但可编辑与只读状态的切换不是通过单击完成的。

你能告诉我如何在按钮点击时将焦点设置在可编辑模板的控件(TextBox)上吗? - Jehof
我卡在第5步了。这是我的代码http://stackoverflow.com/questions/28613473/click-to-edit-control-lostfocus-event-issue - Alex G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接