我有一张3 TextBox
的表单。所有这些控件都包含一些文件夹路径我想使用与所有3个文本框相同的事件。当我双击texbox然后我想在资源管理器中打开该文本框的路径。我将事件设置为
<TextBox x:Name="TxtSource"
TextWrapping="Wrap"
Text="{Binding SelectSource}"
VerticalAlignment="Bottom"
HorizontalContentAlignment="Stretch"
Height="23"
DockPanel.Dock="Bottom">
<TextBox.InputBindings>
<MouseBinding Command="{Binding TextBoxMouseDoubleClick}" MouseAction="LeftDoubleClick"></MouseBinding>
</TextBox.InputBindings>
</TextBox>
现在我想将文本框文本作为参数传递。因此,如果我双击第一个文本框,那么该文本框的文本应该用作参数。对于一些2个控件也是如此。我不知道如何在这里传递自我控制文本。 anybode可以帮助我吗?
现在我有一个为每个文本框创建3个不同事件的解决方案,我不这样做。
使用新问题进行修改
我想编辑这个问题而不是创建一个新线程。我解决了上面的问题。现在,当我双击文本框时,将在新窗口中打开路径。但是当我编辑文本框的路径时,也会打开旧路径。在我从文本框中点击标签或单击其他控件然后再次双击文本框之前,不会处理新路径。任何人都可以帮我吗?上述问题中给出了XAML
文本框。
答案 0 :(得分:1)
尝试以这种方式指定CommandParameter
:
<MouseBinding Command="{Binding TextBoxMouseDoubleClick}"
CommandParameter="{Binding ElementName=TxtSource, Path=Text}"
MouseAction="LeftDoubleClick"/>
答案 1 :(得分:1)
您可以使用CommandParameter,例如:
<TextBox.InputBindings>
<MouseBinding Command="{Binding TextBoxMouseDoubleClick}"
CommandParameter="{Binding ElementName=TxtSource, Path=Text}"
MouseAction="LeftDoubleClick" />
</TextBox.InputBindings>
答案 2 :(得分:0)
笨。我本可以弄清楚的。这就是我做到的。
<TextBox x:Name="TxtSource1"
TextWrapping="Wrap"
Text="{Binding SelectSource1}"
VerticalAlignment="Bottom"
HorizontalContentAlignment="Stretch"
Height="23"
DockPanel.Dock="Bottom">
<TextBox.InputBindings>
<MouseBinding Command="{Binding TextBoxMouseDoubleClick}" CommandParameter="{Binding SelectSource1}" MouseAction="LeftDoubleClick"></MouseBinding>
</TextBox.InputBindings>
</TextBox>
<TextBox x:Name="TxtSource2"
TextWrapping="Wrap"
Text="{Binding SelectSource2}"
VerticalAlignment="Bottom"
HorizontalContentAlignment="Stretch"
Height="23"
DockPanel.Dock="Bottom">
<TextBox.InputBindings>
<MouseBinding Command="{Binding TextBoxMouseDoubleClick}" CommandParameter="{Binding SelectSource2}" MouseAction="LeftDoubleClick"></MouseBinding>
</TextBox.InputBindings>
</TextBox>
<TextBox x:Name="TxtSource3"
TextWrapping="Wrap"
Text="{Binding SelectSource3}"
VerticalAlignment="Bottom"
HorizontalContentAlignment="Stretch"
Height="23"
DockPanel.Dock="Bottom">
<TextBox.InputBindings>
<MouseBinding Command="{Binding TextBoxMouseDoubleClick}" CommandParameter="{Binding SelectSource3}" MouseAction="LeftDoubleClick"></MouseBinding>
</TextBox.InputBindings>
</TextBox>
简而言之,我在ViewModel中为文本框绑定了文本属性。我只是将绑定的text属性作为参数传递。谢谢大家回答。