1

我有一个 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 个控件,情况相同。而且我不确定如何在这里传递自我控制文本。任何人都可以在这里帮助我吗?

现在我有一个为每个文本框创建 3 个不同事件的解决方案,但我不这样做。

用新问题编辑

我想编辑这个问题而不是创建一个新线程。我解决了上述问题。现在,当我双击文本框时,路径会在新窗口中打开。但是当我编辑文本框的路径时,旧路径也会打开。在我从文本框中点击选项卡或单击另一个控件然后再次双击文本框之前,不会处理新路径。有人可以帮我吗?XAML文本框在上面的问题中给出。

4

3 回答 3

1

尝试以CommandParameter这种方式指定:

<MouseBinding Command="{Binding TextBoxMouseDoubleClick}" 
    CommandParameter="{Binding ElementName=TxtSource, Path=Text}"
    MouseAction="LeftDoubleClick"/>
于 2013-06-07T10:20:20.860 回答
1

您可以使用 CommandParameter,例如:

<TextBox.InputBindings>
    <MouseBinding Command="{Binding TextBoxMouseDoubleClick}"
                  CommandParameter="{Binding ElementName=TxtSource, Path=Text}"
                  MouseAction="LeftDoubleClick" />
</TextBox.InputBindings>
于 2013-06-07T10:20:22.663 回答
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 中的文本框绑定了文本属性。我只是将绑定的文本属性作为参数传递。谢谢大家的回答。

于 2013-06-07T10:30:32.387 回答