1

DependencyPropertyカスタムボタンのラベルにバインドしたいと思います。

これが私のものDependencyPropertyです:

public static readonly DependencyProperty ButtonTextProperty = DependencyProperty.Register("ButtonText", typeof(string), typeof(MainMenuButton));

public string ButtonText
    {
        get { return (string)GetValue(ButtonTextProperty); }
        set { SetValue(ButtonTextProperty, value); }
    }

そして、値をラベルにバインドする私の試みは次のとおりです。

<TextBlock x:Name="lblButtonText" Margin="16,45.2465" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource Mode=Self}, Path=ButtonText}" VerticalAlignment="Center" TextAlignment="Right" Foreground="White" FontSize="17.333" FontWeight="Bold" FontFamily="Segoe UI Semibold" Height="26.053"/>

DependencyProperties をバインドするこの方法は、他のケースでは何度か機能しましたが、今回は機能しない理由がわかりませんか?

どうすればこの問題を解決できますか?

4

2 に答える 2

1

バインディングのソースをに設定しておりSelfSelfはでありTextBlock、とTextBlock呼ばれるプロパティがありませんButtonText

バインディングのソースをRelativeSourceタイプのに設定しようとしている可能性がありますMyCustomButton

Text="{Binding Path=ButtonText,
    RelativeSource={RelativeSource AncestorType={x:Type local:MyCustomButton}}}"
于 2012-09-28T14:54:47.167 に答える
1

または、次のようにバインドすることもできます。

まず、カスタム コントロールに名前を付けます。

<uc:myControl x:Name="ucName" ButtonText="MyText" .../>

(この例では uc と呼ばれる xmlns をインポートすることを忘れないでください)

<Window xmlns:uc="NamespaceToMyUc" ...>

次に、ElementName を使用してそれにバインドします。

<TextBlock Text="{Binding ElementName=ucName, Path=ButtonText} ... />
于 2012-09-28T15:06:39.397 に答える