【问题标题】:How to trigger "IsRemoteSession" or "IsSoftwareRendering" in UserControl style?如何在 UserControl 样式中触发“IsRemoteSession”或“IsSoftwareRendering”?
【发布时间】:2011-08-03 11:51:05
【问题描述】:

我们正在使用 .NET 4 - WPF 开发用户控件。 我们有很多客户在远程会话中运行我们的应用程序(例如 Terminal-Server、Citriy 等)。

许多性能问题已经解决。目前我正在寻找一种方法来禁用样式和控件模板中的动画,具体取决于IsRemoteSession 和/或IsSoftwareRendering 的条件。不用写一行代码我就可以做到。

我很确定几个月前我读过一篇博客文章,其中描述了一种使用 xaml 中的触发器来实现此目的的方法,但我再也找不到它了。

任何人有任何提示....?

【问题讨论】:

    标签: wpf xaml styles


    【解决方案1】:

    我这样做的方法是将动画放在触发器中。代码看起来像这样:

    <Window.Resources>
        <Style TargetType="{x:Type WhateverYourTypeIs}">
        <Style.Triggers>
            <!-- Here I assume your whatever holds your IsRemoteSession property is your DataContext -->
            <!-- Otherwise, change your binding -->
            <DataTrigger Binding="{Binding Path=IsRemoteSession}"
                         Value="False">
                <!-- Here you use Setters to add your animations -->
            </DataTrigger>
        </Style.Triggers>
    </Window.Resources>
    

    【讨论】:

    • 感谢您的回答。我考虑过这种方式,但后来我需要在数据上下文中的每个控件中都有一些 dp 来计算远程会话状态。我很确定,有一个更简单的方法....
    • @Carsten:你不需要依赖属性,在可以绑定的地方使用普通的 CLR 属性,并让类实现INotifyPropertyChange,如this。然后,这将通知绑定到您的属性的任何内容其值的任何更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2015-10-14
    • 1970-01-01
    • 2015-06-17
    • 2019-04-11
    • 2013-01-06
    • 1970-01-01
    相关资源
    最近更新 更多