2011-08-03 14 views
0

我們正在開發使用.NET 4的用戶控件 - WPF。 我們有很多客戶在遠程會話中運行我們的應用程序(例如終端服務器,Citriy等)。如何以UserControl風格觸發「IsRemoteSession」或「IsSoftwareRendering」?

許多性能問題已經解決。目前,我正在尋找一種方法來禁用樣式和控制模板中的動畫,具體取決於IsRemoteSession和/或IsSoftwareRendering的條件。我會在不寫一行代碼的情況下做到這一點。

我非常確定我幾個月前閱讀過一篇博客文章,其中描述瞭如何在xaml中使用觸發器來實現這一點,但我無法再找到它。

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

回答

0

我會這樣做的方式是將動畫放入觸發器中。代碼看起來像這樣:

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

感謝您的回答。我想過這種方式,但後來我需要在datacontext的每個控件中計算出遠程會話狀態。我很肯定,有一個更簡單的方法.... – Carsten

+0

@Carsten:你不需要一個依賴屬性,使用一個正常的CLR屬性,你可以綁定到某個地方並讓該類實現'INotifyPropertyChange'就像[這個](http://msdn.microsoft.com/en-us/library/ms743695.aspx)。然後這會通知任何與您的財產有關的任何價值變化。 – Jakub