Silverlight - удаление неявных стилей из раздела - PullRequest
3 голосов
/ 19 августа 2011

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

В основном я хочу сделать что-то вроде этого:

<theme:BureauBlackTheme>
    <StackPanel x:Name="LayoutRoot">
        <StackPanel><!-- Use the standard Bureau Black theme here --></StackPanel>
        <StackPanel><!-- I don't want any implicit styling on this section --></StackPanel>
    </StackPanel>
</theme:BureauBlackTheme>

Глядя на исходный код инструментария Silverlight, я обнаружил, что темы применяются путем слияния словарей ресурсов:

...
// Load the theme
ResourceDictionary resources = null;
using (stream)
{
    resources = ResourceParser.Parse(stream, true);
    owner.MergedDictionaries.Add(resources);
}
...

Где файлы тем содержат набор неявных стилей:

<!--ScrollBar-->
<Style  TargetType="ScrollBar">
    <Setter Property="MinWidth" Value="17" />
    ...

Поэтому мне нужен способ удалить все неявные стили из определенного раздела, но только из этого раздела.Мне это нужно по той причине, что эти стили влияют на стилирование стороннего элемента управления (я думаю, это связано с приоритетом стилей элемента управления ).

Является ли этовозможно в Silverlight 4?Обходные пути тоже приветствуются.

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 23 августа 2011

Лучшее, что вы можете сделать - это замкнуть неявные стили, добавленные SL Toolkit. Например, если вы добавляете пустой стиль, например, так:

<theme:BureauBlackTheme>
    <StackPanel x:Name="LayoutRoot">
        <StackPanel><!-- Use the standard Bureau Black theme here --></StackPanel>
        <StackPanel>
            <!-- I don't want any implicit styling on this section -->
            <StackPanel.Resources>
                <Style TargetType="ScrollBar" />
            </StackPanel.Resources>
        </StackPanel>
    </StackPanel>
</theme:BureauBlackTheme>

Тогда пустой Стиль предотвратит применение Стиля темы, поскольку одновременно может применяться только 1 неявный Стиль. Вы должны сделать это для каждого типа элемента, поддерживаемого SL Toolkit.

1 голос
/ 21 августа 2011

Установить для свойства стиля значение null

Style="{x:Null}" 
...