其实很简单。我已经使用此类交换机制实现了许多表单。 您可以使用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。它具有类似的功能,但可编辑与只读状态的切换不是通过单击完成的。