2009-10-09 2 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> 

вопрос is: Почему первое текстовое поле не зеленое? ==> то есть дизайнер показывает его зеленым цветом, но при запуске приложения его уже нет ...

Я знаю, что solotion этой конкретной проблемы заключается в удалении слияния с дубликаторами, но мне нужно знать, как решить эту проблему, используя объединенные словари.

Спасибо!

ответ

2

MergedDictionaries всегда quirky, вы можете установить любые нужные вам ресурсы, но только только ссылаются на внешние ссылки на ресурсы ресурса ресурса.

<ResourceDictionary.MergedDictionaries> 

     <ResourceDictionary Source="StylesDictionary.xaml"/> 

    </ResourceDictionary.MergedDictionaries> 

Единственное требование состоит в том, чтобы ресурсы были установлены в другом словаре.

+0

Ну, я согласен с тем, что обходной путь, вызывающий в документации, указывает, что смешивание их с внутренними средами - это нормально, и, конечно, из-за правильной обработки 2-х или 3-х текстовых полей! НО, это, безусловно, решение моей проблемы! ТХ! – Peter

0

Попробуйте это ...

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

Нет, это не так, tx в любом случае, теперь я изменил пример – Peter

0

Я не уверен, если это будет работать, но когда я имел проблемы моделирования, я исправил их с помощью

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

Нет, это не так, tx, в любом случае, теперь я изменил пример – Peter