Silverlight中Style内的ContentTemplate内的DataBinding

时间:2013-03-04 16:29:09

标签: silverlight xaml data-binding styles

我在XAML中定义了以下样式:

 <Style TargetType="telerik:RadDiagramShape" x:Key="styleShapeBase">
    <Setter Property="Width" Value="120" />
    <Setter Property="Height" Value="60" />
    <Setter Property="IsResizingEnabled" Value="False" />
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock x:Name="lblName" Text="{Binding Name}" />
            </DataTemplate>
        </Setter.Value>
     </Setter>
</Style>

然后在代码隐藏中我分配数据上下文。我想绘制一个带有一些文本的形状,它来自一个物体(如果这最终起作用,我会在那里放置更多信息)。我是这样做的:

var shape = new RadDiagramShape();
shape.Style = (Style)Resources["styleShapeBase"];
shape.DataContext = item.DataContext;

其中item是一个简单的POCO,其Name属性类型为string(此部分有效,我已跟踪它,即正确分配了DataContext)。

数据绑定永远不会发生。是设计(即内容模板中没有数据绑定),如果不是什么错误?谢谢,

1 个答案:

答案 0 :(得分:2)

您可以在DataTemplates中使用Bindings。在这种情况下,Binding将在您设置为RadDiagramShape内容的任何内容中查找Name属性。

您应该确保您的类具有此属性并且它是一个字符串。

如果仍然无效,您是否可以发布有关如何设置RadDiagramShape的每个实例的样式和内容以及您尝试绑定到的对象的详细信息?


RadDiagramShape类的控制模板中的某个位置,将有一个ContentPresenter,其ContentTemplate绑定到您定义的ContentTemplate。问题是只有在设置了Content属性时才使用ContentTemplate。否则,不会将任何内容加载到ContentPresenter中。

要使其工作,您必须在此元素的实例上设置Content属性。

This is a good place to start understanding what the DataContext property is