2015-06-25 2 views
0

Я файл Grids.xamlвид Импорт из файла ресурсов

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <Label x:Key="SomeTestLabel">Hello There</Label> 

    <Grid x:Key="HomeGrid"> 
     <Label Content="{StaticResource SomeTestLabel}"></Label> 
    </Grid> 

</ResourceDictionary> 

И через ресурсы в моем Menus.xaml файле у меня есть

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <TabItem x:Key="HomeTab" Header="Home"> 
     <Grid><!-- PROBLEM IS RIGHT HERE --></Grid> 
    </TabItem> 

</ResourceDictionary> 
  • Можно ли связать <Grid><!-- PROBLEM IS RIGHT HERE --></Grid> с <Grid x:Key="HomeGrid">...</Grid>?
  • Есть ли лучший обзор, который я мог бы использовать?
  • Есть ли лучший способ сделать это?

Основная причина, почему я делаю это, чтобы реорганизовать код из одного файла (MainWindow.xaml) и в различные другие файлы, так что основной файл и файл основных ресурсов не получить суматоху со случайными кусками коды

+0

Возможный дубликат [Как импортировать один ResourceDictionary в другой, в WPF?] (Http://stackoverflow.com/questions/10541424/how-to-import-one-resourcedictionary-into-other-in-wpf) – Herdo

+1

Не делайте этого. Контрольные объявления не входят в словарь ресурсов. Словарь ресурсов должен использоваться для стилей, кистей, тем, общих изображений, конвертеров, шаблонов и, возможно, некоторых других мелочей. Но ** никогда ** * простые * контрольные декларации. Они входят в 'Window' или' UserControl'! – Herdo

+0

@ Спасибо за то, что указали мне на 'UserControl', они точно * то, что я искал. Огромное спасибо! – Isaac

ответ

1

A <ResourceDictionary /> не является центральным местом для объявления элементов управления. Вещи, которые объявлены в одном из этих словарей, могут использоваться с помощью элементов управления (например, стилей, кистей, тем, общих изображений, конвертеров и шаблонов).

Однако, декларации управления (например, <Grid />) является всегда экземпляр этого конкретного класса, который будет вынесенным в рамках WPF. Контроль может существовать только в одном месте за раз, поэтому размещение одного внутри ResourceDictionary не является хорошей идеей (в любом случае оно не может использоваться повторно). Контрольные декларации всегда принадлежат к UserControl, Window или другому хостингу, где вы хотите его отобразить.

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