TextBox文本作为参数n双击事件

时间:2013-06-07 10:14:25

标签: c# wpf mvvm parameters textbox

我有一张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文本框。

3 个答案:

答案 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属性作为参数传递。谢谢大家回答。