2010-04-15 80 views
8

我在Visual Studio 2010 Express(C#)中創建了一個WPF應用程序,並將以下文本添加到App.xaml中的Application.Resources。我在設計器中看到應用於窗口的樣式,但是當我運行應用程序時,窗口背景是白色的。WPF窗口樣式在運行時不工作

如果這是一個因素,請在MacBook Pro上的BootCamp上的Windows XP中運行。

由於提前,

基督教

<Style TargetType="{x:Type Window}"> 
     <Setter Property="Background"> 
      <Setter.Value> 
       <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
        <GradientStop Offset="0" Color="WhiteSmoke" /> 
        <GradientStop Offset="1" Color="Silver" /> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 

     <Setter Property="Padding" Value="20" /> 
    </Style> 

回答

10

微軟已經複製了這個問題,看起來它可能是WPF 4.0中的一個bug。

https://connect.microsoft.com/VisualStudio/feedback/details/555322/global-wpf-styles-are-not-shown-when-using-2-levels-of-references

繼誰提交了錯誤的人做了研究,我把我們所有的所有納入合併資源字典個別XAML資源文件和削減和樣式的文本粘貼到一個單一的UberStyles。 xaml文件。我避免使用MergedDictionaries。

這解決了這個問題,並從我的WPF 3.5應用程序我的風格信息回來對我的WPF 4.0應用程序。

要我的眼睛,這是在WPF 4.0中的明顯錯誤 - 我不完全相信你會如何施放此爲特徵和行爲是無證。我對WPF 4.0平臺的整體影響有點擔心。你會以爲這一切都在Visual Studio 2010發佈的測試被抓!

無論如何,希望這有助於。自從我們兩週前升級到VS2010以來,我一直被這個錯誤所驅使。

0

我有同樣的問題。我們爲每個標準控件開發了一個自定義樣式的庫,它在deagner和運行時都能在.net 3.5下正常工作。 今天我們決定將我們的項目切換到.net4(wpf 4有許多新的美味特點)。之後,在運行時的所有樣式像在運行時,這個不是工作,而是在設計應用:

<Style TargetType={x:Type Button}> 
     <Setter Property="FontSize" Value="14"/> 
</Style> 

樣式與設置好的X:重點工作的罰款。但是我們需要爲主題設置默認樣式,而不是爲每個控件設置它。

+0

您是使用標準控件還是使用標準控件的子類?如果你從他們身上繼承,那麼下面我的答案會給你洞察力。否則,我不知道,因爲我不知道什麼是參與升級WPF應用程序從3.5至4。 – 2010-04-16 21:25:55