none
XAML. Style по-умолчанию не равен {StaticResourse {x:Type TYPE}} RRS feed

  • Вопрос

  • Здравствуйте, столкнулся со следующей проблемой.

    Есть файл ресурсов: Separator.xaml

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    
      <Style TargetType="{x:Type Separator}">
       <Setter Property="Background" Value="Red" />
      </Style>
    
    </ResourceDictionary>
    

    И есть файл с корневым элементом Window, у которого в потомках создаётся ToolBar:

     

    <ToolBar>
    
      <ToolBar.Resources>
       <ResourceDictionary>
         <ResourceDictionary.MergedDictionaries>
          <ResourceDictionary Source="Separator.xaml" />
         </ResourceDictionary.MergedDictionaries>
       </ResourceDictionary>
      </ToolBar.Resources>
    
      <Button Content="Buttton1" />
      <Separator />
      <Button Content="Button2" />
    
    </ToolBar>
    

     

    Соответственно стили для Separator-а не устанавливаются, если же изменить код на следующий:

     

    <Separator Style="{StaticResource {x:Type Separator}}" />
    

    То стили нормально применяются.

    Кто может объяснить в чём логика выбора стиля для элемента в этом примере?

     

    8 июня 2011 г. 20:52

Ответы

  • Вы должны использовать default.xaml если хотите, чтобы стили применились по дефолту, либо явно прописывать этот стиль в ресурсах элемента, в котором находится сепаратор.
    • Помечено в качестве ответа Abolmasov Dmitry 14 июня 2011 г. 20:08
    9 июня 2011 г. 11:20
    Отвечающий