2013-04-02 3 views
16

Я новичок в WPF и пытаюсь создать новый ресурс в одном файле xaml и ссылаться на него в другом файле xaml. определяю т.е.Пользовательский ресурс WPF Reference, определенный в другом файле xaml

<Window.Resources> 
    <ImageBrush x:Key="TileBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 32 32" ImageSource="MyImageButton.png" Opacity="0.3"> 
    </ImageBrush> 
</Window.Resources> 

И пытаются использовать его в другом файле XAML по

<Grid> 
    <Button Background="{StaticResource TileBrush}" Margin="5" Padding="5" FontWeight="Bold" FontSize="14"> 
     A Tiled Button 
    </Button> 
</Grid> 

Однако я получаю ошибку «StaticResource ссылка„TileBrush“не был найден.» Я могу ссылаться на ресурс из одного и того же файла xaml, но не знаю, как это сделать из другого файла.

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

+0

http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/03/creating-and-consuming-resource-dictionaries-in-wpf-and-silverlight.aspx –

ответ

23

В WPF ссылки ресурсов работают как дерево. Каждый элемент управления имеет ресурс, а элемент управления детьми может обращаться к ресурсам родителей. Глобальный словарь ресурсов приложения находится в файле App.xaml. В этом файле вы можете включить несколько ресурсных словарей в виде объединенного словаря. Смотрите этот пример кода:

<?xml version="1.0" encoding="utf-8"?> 
<Application ...> 
    <Application.Resources> 
     <ResourceDictionary> 
      <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" /> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="View\SomeFileDictionary.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

SomeFileDictionary.xaml находится в папке View моей структуры проекта. И уже выглядит следующим образом:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:ViewModel="clr-namespace:Cepha.ViewModel" 
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
       ... > 

<DataTemplate DataType="{x:Type ViewModel:SomeType}"> 
    <TextBox .../> 
</DataTemplate>... 

И каждый ключ словаря или данных шаблон, определенный в этом файле (или App.xaml), можно ссылаться в любом месте вашего проекта. Надеюсь, это поможет ...

+0

То, что мне нужно. Brilliant. Благодарю. – user1400716

+0

Существует шаблон для словаря ресурсов. Я нашел его в диалоговом окне «Добавить новый элемент» в 'Windows Store Group'. –

+1

Да, а также, если вы добавляете словарь ресурсов с использованием шаблона Blend, он также создает объединенные словари ... –

0

Вы должны определить это в файле app.xaml. Эти ресурсы распределены по всему проекту

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

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