2014-09-29 89 views
0

我有一个TextBox。允许双击文本框IsEnabled = false

我希望它是处于禁用状态,这样我就可以拖动。一旦我双击它,我希望它恢复启用。

我可以使用只读属性用于此目的。但是,如果我使用ReadOnly,那么我无法拖动文本框,而是得到选择。

我这样做的实际原因是我想使用文本框为树型视图和我想允许像重命名功能和使用拖放重新排列。

如果任何人都可以提出类似的东西,我可以创建和覆盖一些方法自定义控件?

+0

你想调用一些方法或绑定到命令吗? – pushpraj 2014-09-29 04:13:45

+0

我想处理MouseDoubleClick事件。我有一个解决方案。此时冒泡事件是我的朋友。我在TreeViewItem而不是TextBox上监听MouseDoubleClick。由于TextBox被禁用,TreeViewItem的事件被触发。 – Vishal 2014-09-29 04:17:50

+0

这就是我的想法,如果可行的话,您可以捕获父容器上的事件。如果您需要处理文本框本身,那么我们可能会进一步深入研究。 – pushpraj 2014-09-29 04:20:07

回答

1

我建议包装内网格文本框。并为文本框设置IsHitTestVisible为false。这将避免TextBox的所有鼠标事件。现在,将所有拖动事件挂接到网格,它将起作用。

<Grid Background="Transparent" VerticalAlignment="Center"> 
     <TextBox IsHitTestVisible="False" Margin="5" Text="Some text"/> 
</Grid> 
+0

我可以使用其他容器类型,如StackPanel吗? – Vishal 2014-09-29 06:36:34

+0

是的你可以。如果有效,请接受答案。 – Jawahar 2014-09-29 06:38:03

+0

不,我现在查过了。这是行不通的。当我双击它时,我无法在EditMode中获取文本框。 – Vishal 2014-09-29 06:40:55