对单个控件使用类型化数据模板

时间:2011-05-26 21:06:18

标签: c# wpf

有没有办法将一些边界属性分配给一个ViewModel,然后让Border的内容匹配与该VieWModel对应的任何类型化数据模板?

这是一个非常人为的例子,但是假设我有一个用户控件:

<Grid>
    <StackPanel>
        <TextBox Height="30" Width="300" Margin="10" Text="{Binding IntProperty}"></TextBox>
        <TextBox Height="30" Width="300" Margin="10"></TextBox>
        <Border x:Name="SingleElement" Height="100" Width="350" BorderBrush="Red" />
    </StackPanel>
</Grid>

我有这种类型的数据模板:

<DataTemplate DataType="local:SingleItemViewModel1">
    <StackPanel>
        <TextBlock Margin="10" Text="{Binding A}"></TextBlock>
        <TextBlock Margin="10" Text="{Binding B}"></TextBlock>
    </StackPanel>
</DataTemplate>

在我的用户控件的代码隐藏中(再次,设法)有一个SingleElement的属性,我可以将其分配给SingleItemViewModel1的新实例,以便上面的DataTemplate显示在它?

1 个答案:

答案 0 :(得分:0)

假设您已绑定到一个视图模型,该模型公开名为“{1}}类型的”Item“的属性:

定义数据模板后,这应该有效:

SingleItem

请注意,Border是FrameworkElement和Decorator的后代 - 它没有自己的“内容”,只有一个可视子元素。因此,ContentControl声明为其子。