2009-10-09 81 views
0

好的,我編寫了一個應用程序,它可以在運行時加載合併字典,以在卡住時改變外觀和行爲:我的窗體上的一些控件沒有對我認爲他們必須作出反應的樣式作出反應。wpf中的奇怪風格行爲?

我試圖盡我所能簡化問題,用這麼簡單的東西,我很害怕,我俯瞰出血明顯上來了,但無論如何,這裏有雲:

<Window x:Class="Example.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="100" Width="50"> 
    <Window.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary> 
         <Style TargetType="{x:Type TextBox}"> 
          <Setter Property="Background" Value="Green"></Setter> 
         </Style> 
       </ResourceDictionary> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Window.Resources> 
    <StackPanel>   
     <TextBox Text="1" Name="box1"/> 
     <TextBox Text="2" Name="box2"/> 
     <TextBox Text="3" Name="box3"/> 
    </StackPanel> 
</Window> 

問題是:爲什麼第一個文本框不是綠色的? ==>也就是說,設計師以綠色顯示它,但在運行應用程序時,它不再是...

我知道解決這個問題的方法是去掉合併的dicitonary標記,但我需要了解如何使用合併字典解決此問題。

謝謝!

回答

2

MergedDictionaries一直古怪的,你可以設置你想要的任何資源,但是它們只在之外的資源字典引用在運行時進行處理。

<ResourceDictionary.MergedDictionaries> 

     <ResourceDictionary Source="StylesDictionary.xaml"/> 

    </ResourceDictionary.MergedDictionaries> 

唯一的要求是將資源設置在其他字典中。

+0

嗯,我海外商品會有一個解決辦法,原因在文檔中就指出,將它們與內部混合是可以的,因爲2個或3個文本框被正確處理!但是,這肯定是我的問題的解決方案! TX! – Peter 2009-10-09 14:11:11

0

嘗試......

<Style TargetType="{x:Type TextBox}"> 
+0

不,這不是它,TX反正,我已經改變了例如現在 – Peter 2009-10-09 13:50:49

0

我不知道這是否會工作,但是當我有造型的問題,我用固定它們

TargetType="{x:Type TextBox}" 
+0

不,這不是它,TX反正,我已經改變了例如現在 – Peter 2009-10-09 13:50:14