1

我在 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在哪里(这部分有效,我已经对其进行了跟踪,即正确分配了 DataContext)。Namestring

但是数据绑定永远不会发生。是否是设计使然(即内容模板内没有数据绑定),如果不是有什么问题?谢谢,

4

1 回答 1

2

您可以在 DataTemplates 中使用绑定。在这种情况下,绑定将在您设置为 RadDiagramShape 的内容的任何内容上查找名称属性。

你应该确保你的类有这个属性并且它是一个字符串。

如果这仍然不起作用,您能否发布有关如何设置 RadDiagramShape 的每个实例以及您尝试绑定的对象的样式和内容的详细信息?


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

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

这是开始了解 DataContext 属性是什么的好地方

于 2013-03-04T17:11:32.330 回答