0

画像とテキストを含む自作のボタンがあります。

<ButtonImageApp:ButtonImage   
BText="Button" 

これはうまくいきます。しかし、バインドしようとすると、ボタンのコードが壊れてしまいます。

これはうまくいきません。

BText="{Binding Path=LocalizedResources.PlayButton, Source={StaticResource LocalizedStrings}}"

XAML

<Button x:Class="ButtonImageApp.ButtonImage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        IsEnabledChanged="ButtonIsEnabledChanged"
        MouseEnter="ButtonMouseEnter"
        MouseLeave="ButtonMouseLeave">

    <Grid>
        <Image Stretch="None"
           HorizontalAlignment="Center"
           VerticalAlignment="Center"
               Grid.Row="0" Grid.Column="0"
           x:Name="image" />
        <TextBlock x:Name="txtButtonText"  
            Foreground="Black"             
            Text="{Binding Path=BText}"
            Grid.Row="0" Grid.Column="0" 
            Margin="20,51,0,-51" TextAlignment="Center"></TextBlock>
    </Grid>
</Button>

コード:

public static readonly DependencyProperty ButtonText = DependencyProperty.Register("BText", typeof(string), typeof(ButtonImage), null);
public string BText
{
    get { return (string)GetValue(ButtonText); }

    set
    {
        SetValue(ButtonText, value);
        txtButtonText.Text = value;
    }
}
4

1 に答える 1

0

問題は、バインディングを使用すると、プロパティのセッターが呼び出されないことです。
代わりに、変更された依存関係プロパティを登録する必要があります。

public static readonly DependencyProperty ButtonText = DependencyProperty.Register("BText", typeof(string), typeof(ButtonImage), new PropertyMetadata(ButtonTextChanged));

    private static void ButtonTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        txtButtonText.Text = e.NewValue;
    }
于 2013-09-15T17:48:37.963 に答える