我在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)。
但数据绑定永远不会发生。是设计(即内容模板中没有数据绑定),如果不是什么错误?谢谢,
答案 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