在ResourceDictionary中共享控件

时间:2011-06-17 20:14:11

标签: wpf wpf-controls

我有一个网格,我想在几个地方分享,网格有几个控件(文本框,标签,文本块和按钮)。我将它放在我的ResourceDictionary中,如下所示:

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

但是当我在不止一个地方使用它时,我得到一个例外:

“指定的元素已经是另一个元素的逻辑子元素。首先断开它。”

这是有道理的,所以我想知道是否还有其他方法可以达到这个目的。

提前致谢。

2 个答案:

答案 0 :(得分:3)

如果我正确理解你要做的事情(在多个地方展示完全相同的复合控件),你可以将网格放在ControlTemplate并将其应用到ContentControl s:< / p>

在ResourceDictionary中:

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

在UserControl中:

<ContentControl Content="[...]" Template="{StaticResource frequentlyUsedTemplate}"/>

答案 1 :(得分:1)

您要做的是使用此模板创建自定义控件,然后使用此自定义控件的实例而不是Grid本身。或者创建一个UserControl并使用它的实例。