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 で Bindings を使用できます。この場合、Binding は、RadDiagramShape の Content として設定したものについて Name プロパティを探します。

クラスにこのプロパティがあり、それが文字列であることを確認する必要があります。

それでもうまくいかない場合は、RadDiagramShape の各インスタンスのスタイルとコンテンツの設定方法、およびバインドしようとしているオブジェクトの詳細を投稿できますか?


RadDiagramShape クラスのコントロール テンプレートのどこかに、定義したものにバインドされた ContentTemplate を持つ ContentPresenter があります。問題は、Content プロパティも設定されている場合にのみ ContentTemplate が使用されることです。それ以外の場合、その ContentPresenter には何も読み込まれません。

これを機能させるには、この要素のインスタンスに Content プロパティを設定する必要があります。

これは、DataContext プロパティとは何かを理解し始めるのに適した場所です。

于 2013-03-04T17:11:32.330 に答える