2016-07-11 7 views
0

В нашем приложении silverlight у нас есть вид контейнера, который содержит тег ResourceDictionary для styles.xaml. Любое из представлений, которое вызывает контейнер, наследует одни и те же стили.Как переопределить стиль шаблона в xaml

Проблема заключается в том, что у нас есть пользовательский элемент управления, состоящий из кнопки + текстовое поле + всплывающее окно. Когда мы используем этот настраиваемый элемент управления в любом представлении, элемент управления будет работать, но внешний вид неправильный, поскольку он наследует от стиля контейнера.

Пользовательский элемент управления не выглядит правильным при использовании в этом представлении. Но если мы удалим Style.xaml, пользовательский элемент управления будет выглядеть нормально.

Мы должны использовать этот шаблон стиля.

Есть ли способ сообщить, что наш пользовательский элемент управления не наследуется от шаблона стилей контейнера?

+0

У меня возникли проблемы с визуализацией структуру, что вы имеете в виду под «ResourceDictionary метки для Styles.xaml "? Означает ли это, что вы включили его в список MergedDictionary в представлении родительского контейнера? Являются ли шаблоны в styles.xaml не стандартными и глобально переопределяют все дочерние элементы TargetType? Похоже, вам просто нужно будет опустить эти переопределения с быстрой версией BasedOn до значения по умолчанию, но я не уверен, так как неясно, какая настройка в настоящее время, по крайней мере для меня. :/ –

+0

В моем представлении контейнера есть MergedDictionary, который указывает на styles.xaml, который определяет множество тем для элементов управления. Когда вызываются пользовательские представления вида, они наследуют их внешний вид от styles.xaml. Это прекрасно, но пользовательский элемент управления, который мы добавили, выглядит не совсем корректно. Но пользовательский элемент управления отлично выглядит в других формах, которые не используют этот стиль.xaml. Есть ли способ переопределить то, что делает styles.xaml с пользовательским элементом управления, из styles.xaml? – Jerry

+0

Хорошо, сожалею, амиго, но все еще испытываю трудности с визуализацией того, что, скорее всего, было бы виновником. Когда вы говорите, что это выглядит неправильно, означает ли это, что существуют отдельные типы управления, которые не выглядят правильно, как TextBox? Должен ли я предположить, если у вас есть настраиваемый элемент управления, вы определили ControlTemplate, который по сути переопределяет шаблон элемента управления, который обычно получает его внешний вид из шаблона стиля в ваших styles.xaml? Похоже, что в случае, например, в TextBox, это просто добавление ссылки обратно в стиль, требуемый с помощью объявления BasedOn? –

ответ

0

Допустим, у вас есть контроль над

<UserControl x:Name="MyControl"> 
    <TextBlock Text="Small Text" FontSize="8" /> 
</UserControl> 

и вы счастливы.

Но пользователь помещает его в этот контейнер

<Grid> 
<Grid.Resources> 
    <Style TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="Red" /> 
    </Style 
</Grid.Resources> 
<MyControl /> 
</Grid> 

Теперь TextBlock собирается быть красными и маленькими. Это тип проблемы, с которой вы сталкиваетесь.

Если вы не хотите, чтобы пользователь элемента управления переопределял этот стиль, вам нужно будет указать значение яркости в текстовом блоке, например.

<UserControl x:Name="MyControl"> 
    <TextBlock Text="Small Text" Foreground="Black" FontSize="8" /> 
</UserControl> 

п.с. Извините, если я получил имена свойств неправильно, это было некоторое время, так как я использовал WPF/Silverlight

 Смежные вопросы

  • Нет связанных вопросов^_^