2013-06-07 3 views
1

У меня есть форму с 3 TextBox. Все эти элементы управления содержат несколько путей к папке. Я хочу использовать такое же событие, как и для всех 3 текстовых полей. Когда я дважды нажимаю на texbox, я хочу открыть путь к этому текстовому полю в проводнике. Я установил событие какТекст TextBox как параметр n Событие Double Click

<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> 

Теперь я хочу передать текст текстового поля в качестве параметра. Поэтому, если я дважды щелкнул 1-й текстовый блок, текст этого текстового поля должен использоваться как параметр. И тот же сценарий для некоторых 2 элементов управления. И я не уверен, как передать текст самоконтроля. Может ли anybode помочь мне здесь?

Теперь у меня есть решение создать 3 разных события для каждого текстового поля, и я не хочу этого делать.

Редактировать с Новым вопросом

Я думал, чтобы изменить этот вопрос вместо того, чтобы создать новую тему. Я решил эту проблему. Теперь, когда я дважды щелкаю текстовое поле, путь открывается в новом окне. Но когда я редактирую путь в текстовом поле, тогда также открывается старый путь. Новый путь не обрабатывается до тех пор, пока я не удаляю вкладку из текстового поля или не нажимаю на другой элемент управления, а затем дважды дважды щелкните текстовое поле. Может ли кто-нибудь помочь мне в этом? XAML для текстового поля приведено в приведенном выше вопросе.

+0

Использовать CommandParameter – JleruOHeP

+0

hmmm .... Я сделал то же самое. В любом случае спасибо. – Sandy

ответ

0

Stupid. Я мог бы понять это. Вот как я это сделал.

<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. Я просто передаю свойство связанного текста в качестве параметра. Спасибо всем за ответ.

1

Попробуйте указать CommandParameter этот путь:

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

+1 ... Спасибо ... Я сам это понял ... но честно, что вы ответили, мне было неизвестно. Узнал что-то новое ... :) – Sandy

1

Вы можете использовать CommandParameter, например:

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

+1 ... Спасибо ... Я сам это понял ... но честно, что вы ответили, мне было неизвестно. Узнал что-то новое ... :) – Sandy