【问题标题】:TextBox text as parameter n Double Click eventTextBox 文本作为参数 n 双击事件
【发布时间】:2013-06-07 21:39:56
【问题描述】:

我有一个带有 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 的文本框在上面的问题中给出。

【问题讨论】:

  • 嗯....我也是这样做的。无论如何,谢谢。

标签: c# wpf mvvm parameters textbox


【解决方案1】:

尝试这样指定CommandParameter

<MouseBinding Command="{Binding TextBoxMouseDoubleClick}" 
    CommandParameter="{Binding ElementName=TxtSource, Path=Text}"
    MouseAction="LeftDoubleClick"/>

【讨论】:

  • +1...谢谢...我自己想通了...但老实说,我不知道您的回答。学到了一些新东西...:)
【解决方案2】:

可以使用CommandParameter,例如:

<TextBox.InputBindings>
    <MouseBinding Command="{Binding TextBoxMouseDoubleClick}"
                  CommandParameter="{Binding ElementName=TxtSource, Path=Text}"
                  MouseAction="LeftDoubleClick" />
</TextBox.InputBindings>

【讨论】:

  • +1...谢谢...我自己想通了...但老实说,我不知道您的回答。学到了一些新东西...:)
【解决方案3】:

愚蠢。我本来可以想出来的。我就是这样做的。

<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 中为文本框绑定了文本属性。我只是将绑定的文本属性作为参数传递。谢谢大家的回答。

【讨论】:

    猜你喜欢
    • 2012-03-30
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2018-12-31
    • 1970-01-01
    相关资源
    最近更新 更多