Совместное использование элементов управления в ResourceDictionary - PullRequest
0 голосов
/ 18 июня 2011

У меня есть сетка, которой я хочу поделиться в нескольких местах, сетка имеет несколько элементов управления (текстовые поля, метки, текстовые блоки и кнопки). Я поместил его в свой ResourceDictionary так:

<Grid Background="LightGray" x:Key="gridShare">
   <!-- other controls here -->
</Grid>

Но когда я использую его более чем в одном месте, я получаю исключение, говорящее:

"Указанный элемент уже является логическим дочерним элементом другого элемента. Сначала отключите его."

Что имеет смысл, поэтому мне интересно, есть ли другой способ добиться этого.

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

Ответы [ 2 ]

3 голосов
/ 18 июня 2011

Если я правильно понимаю, что вы пытаетесь сделать (представить один и тот же составной элемент управления в нескольких местах), вы можете поместить сетку в ControlTemplate и применить ее к ContentControl s:

В ResourceDictionary:

<ControlTemplate x:Key="frequentlyUsedTemplate">
  <Grid>
    [...]
  </Grid>
</ControlTemplate>

В пользовательском контроле:

<ContentControl Content="[...]" Template="{StaticResource frequentlyUsedTemplate}"/>
1 голос
/ 18 июня 2011

Что вы хотите сделать, это создать пользовательский элемент управления с этим шаблоном, а затем использовать экземпляр этого пользовательского элемента управления вместо самой Grid. Поочередно создайте UserControl и используйте его экземпляры.

...