在Silverlight中单击即可编辑

有没有办法在Silverlight中进行“点击编辑”控制? 我有一些项目将在treeview控件中显示,我希望标签可以直接在treeview中编辑。

有人知道怎么做吗?

实际上很容易。 我用这种交换机制实现了许多forms。

您可以使用Converter执行此操作,并对绑定到TreeView的实体上存在的IsEditable属性执行简单的BooleanToVisibility转换。 在TreeView ItemTemplate中,只要IsBditable属性为true,就会以一种方式绑定TextBlock,并且当IsEditable属性为false时,将TextBox绑定为Coplab,反之亦然。

如果要构建自定义ClickToEdit控件,则需要执行以下操作:

  1. 创建一个inheritance自ContentControl的类
  2. 公开DataTemplate类型的新依赖项属性:一个名为EditableTemplate。
  3. 在OnApplyTemplate中添加MouseLeftButtonUp事件处理程序以侦听单击。
  4. 将活动内容模板更改为Click事件上的EditableTemplate。
  5. 当控件失去焦点时,请更改模板。

现在在TreeView中使用自定义控件:

  1. 覆盖TreeView的ItemTemplate
  2. 将自定义ClickToEdit控件放在那里

实现自定义控件将允许您(或其他开发人员)轻松指定他们想要用作内容编辑器的控件。 例如,他们可以指定NumericUpDown或DateTimePicker而不是仅使用TextBox。

在Silverlight 3中查看DataForm。它具有类似的function,但是可编辑与只读的切换不是通过单击完成的。