2

TagコントロールのプロパティをコントロールのプロパティにバインドしようとしましたVisibilityが、VS で次のエラーが表示されます。

オブジェクト参照がオブジェクト インスタンスに設定されていません

XAML は次のようになります。

<RadioButton GroupName="NavButtonSide" 
             Tag="7"  
             Visibility="{Binding Path=Tag, 
                                  Converter={StaticResource ControlTagVisibilityConverter}, 
                                  RelativeSource={RelativeSource Mode=Self}}"/>

誰かがそれを解決する方法を教えてもらえますか?

4

1 に答える 1

4

バインディングに問題はありません。これは私にとってはうまくいきます。

<Window.Resources>
    <local:ControlTagVisibilityConverter x:Key="ControlTagVisibilityConverter" /> 
</Window.Resources>

<RadioButton 
    Tag="7" 
    Visibility="{Binding Path=Tag, 
        Converter={StaticResource ControlTagVisibilityConverter}, 
        RelativeSource={RelativeSource Mode=Self}}"/>

ControlTagVisibilityConverter.cs

public class ControlTagVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var valueAsString = (string) value;
        var valueAsInt = int.Parse(valueAsString);

        switch (valueAsInt)
        {
            case 7:
                return Visibility.Visible;
            default:
                return Visibility.Hidden;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
于 2013-03-07T12:19:55.913 に答える