2015-12-29 3 views
1

У меня есть некоторые стили, которые включены в страницу с ссылкой на ресурс.WinRT XAML Применение стиля Inside DataTemplate

<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="MyStyles.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

Я назвал стили для TextBlock, Button и т.д. При их использовании, все работает отлично.

Когда я пытаюсь использовать их внутри DataTemplateItemsControl, они не применяются.

<ItemsControl> 
    <ItemsControl.ItemsPanel> 
     <StackPanel Orientation="Horizontal" /> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="blah" Style="{StaticResource MyTextBlockStyle}" /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Как я могу получить названные стили, которые включены из другого файла для работы внутри моего DataTemplate, как это делает везде на этой странице?

ответ

0

Вместо того чтобы включать стили в XAML конкретной страницы, включите их в App.xaml. Вот как добавить их

<Application x:Class="MyApp.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="using:MyApp"> 

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Resources/Resources.xaml"></ResourceDictionary> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Я использую стиль, определенный в Resources.xaml в DataTemplate все время.

+0

Весь мой код находится в другой сборке, которую используют несколько проектов. Наличие установки xaml для одной страницы в другой сборке не представляется разумным. –

+0

Говоря о разных собраниях, вы попробовали [это] (http://blogs.msdn.com/b/madenwal/archive/2015/02/09/how-to-link-style-resource-dictionaries-located-in -Разная-сборка-в-winrt.aspx)? –

+0

У меня есть 'Shared.dll'. Эта сборка содержит 'Page.xaml' и' MyStyles.xaml'. Существует еще одно приложение, которое включает эту сборку. Он работает отлично для всего на странице, пока внутри 'DataTemplate'' ItemsControl'. –

0

Вместо того, чтобы определять вручную, вы можете использовать Blend до панели дизайна.

При нажатии правой кнопки мыши на ваши

GridView> Изменить дополнительные шаблоны> Изменить Произведенные товары

enter image description here

вы можете редактировать контент. Затем вы можете выбрать любого из вашего пункта и определить их стиль на дизайн панели, как показано ниже

enter image description here

Если вы не видите свою кнопку, стиль TextBlock в меню правой кнопки мыши, вы можете проверить это сообщение, чтобы сделать их многоразовыми Style only works for the first occurence when outside Grid.Resources?

Надеюсь, это будет полезно.

+0

У меня нет Blend. У меня есть «generic.xaml» и «themeresources.xaml» из SDK, чтобы скопировать исходный XAML, если мне нужно его изменить. –

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