【问题标题】:WPF TextBlock MouseUp Change ViewModel PropertyWPF TextBlock MouseUp 更改 ViewModel 属性
【发布时间】:2014-09-11 13:42:42
【问题描述】:

我希望能够单击TextBlock 和我的绑定IsEditing 进行更改。

<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 为假时更改可见性。我已经有一个转换器了。

我不知道在哪里可以找到这个,我可以帮忙。

【问题讨论】:

  • 您需要的是附加行为。我建议通过 nuuget 下载 Mvvm light。然后,这允许您在混合中打开您的项目并将EventToCommand 行为拖放到您的文本块上,从而允许您在单击文本块时触发命令
  • MouseUp="{Binding MyMouseCommand}" 会这样做吗?
  • 是的,听起来不错,然后您可以使用 MyMouseCommand 做任何您想做的事情。在混合中,一旦你将附加的行为放到你的文本块上,你可以改变很多东西(触发器类型、事件、命令等)

标签: c# wpf xaml mvvm


【解决方案1】:

最好的方法之一是使用交互(请参阅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 的命令。

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 2013-04-26
    • 2013-01-09
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多