2014-09-11 77 views
0

我希望能够点击TextBlock和我的绑定IsEditing进行更改。WPF TextBlock MouseUp更改ViewModel属性

<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding Description}" ToolTip="{Binding Description}" FontSize="12" TextTrimming="CharacterEllipsis" Visibility="{Binding IsEditing, Converter={StaticResource InverseBoolToVisibilityConverter}}"> 
    <Style TargetType="{x:Type TextBlock}"> 
     <Style.Triggers> 
      <EventTrigger RoutedEvent="PreviewMouseUp"> 

      </EventTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBlock> 

我很确定它在EventTrigger

我还需要TextBlock中的DataTrigger以及在IsEditing为假时更改可见性。我已经有一个转换器。

我不知道在哪里寻找这个,我可以得到一些帮助。

+0

你需要的是一个附加的行为。我会建议通过nuuget下载'Mvvm light'。然后,您可以在混合中打开项目,并将'EventToCommand'行为拖放到您的文本块上,从而允许您通过单击文本块 – user1 2014-09-11 13:51:23

+0

来触发命令'MouseUp =“{Binding MyMouseCommand}”'做到这一点吗? – 2014-09-11 13:57:13

+0

Yea听起来很对,你可以使用MyMouseCommand来做任何你想做的事情。在混合一旦你已经将附加的行为放到你的文本块上时,你可以改变大量的东西(触发类型,事件,命令等) – user1 2014-09-11 13:59:37

回答

2

其中一个最好的方法是使用相互作用(见can we use <i:Interaction.Triggers> in WPF MVVM (not in Silverlight)的设置)的

然后,只需添加文本块中的以下内容:

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="PreviewMouseUp"> 
     <i:InvokeCommandAction Command="{Binding ChangeIsEditing}" /> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

凡ChangeIsEditing是DataContext的命令/ ViewModel根据需要更改IsEditing

相关问题