在ResourceDictionary中定义UserControl?

时间:2013-04-15 16:21:51

标签: wpf resourcedictionary

是否可以在ResourceDictionary中定义UserControl,然后将其添加到同一XAML文件中的组件?类似的东西:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        etc.>
    <Window.Resources>
        <ResourceDictionary>
            <UserControl x:Key="MyCustomLabel">
                <Label Content="Foo"/>
                ...lots more here
            </UserControl> 
        </ResourceDictionary>        
    </Window.Resources>
    <Grid>
        <MyCustomLabel />  //This doesn't work
        <MyCustomLabel />
        <MyCustomLabel />
    </Grid>
</Window>

我可以在自己的文件中定义它,但我真的只需要它作为此文件中的子组件。我会使用Style,但我不知道如何设置Grid的每一行的内容。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以使用DataTemplate资源和ContentPresenter控件来实现此目的。以下示例与您的UserControl

类似
<Window>

    <Window.Resources>
        <DataTemplate x:Key="ButtonTemplate">
            <Button Content="{Binding}"/>
        </DataTemplate>            
    </Window.Resources>


    <StackPanel Margin="35">
        <ContentControl ContentTemplate="{StaticResource ButtonTemplate}" Content="Hallo" />
        <ContentControl ContentTemplate="{StaticResource ButtonTemplate}" Content="123" />
        <ContentControl ContentTemplate="{StaticResource ButtonTemplate}" Content="ABC" />
    </StackPanel>

</Window>

ContentControls呈现为:

Rendered

只需用您自己的控件替换Button,它应该按照您想要的那样...