wpf - 为什么绑定(bind)到 "Self"不起作用?

标签 wpf xaml binding relativesource

我尝试将控件的 Tag 属性绑定(bind)到控件的 Visibility 属性,但在 VS 中收到以下错误:

object reference not set to an instance of an object

XAML 如下所示:

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

谁能告诉我怎么解决吗?

最佳答案

你的绑定(bind)没有问题。这对我来说效果很好;

<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();
    }
}

关于wpf - 为什么绑定(bind)到 "Self"不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15269224/

相关文章:

c# - MVVM Light 和一个应用程序实例

c# - 当 AutoGenerateColumns = True 时如何重命名 DataGrid 列?

c# - 样式化文本框光标/插入符号

c# - 在 Canvas 中添加椭圆位置

wpf - PostSharp NotifyPropertyChanged 模型 - PropertyChangedEventHandler

c# - WPF:如何在 DataGrid 中添加自定义列?

c# - Ninject + MVC3 没有注入(inject) Controller

Python变量命名/绑定(bind)混淆

wpf - 嵌套数据上下文

c# - 使用 Entity Framework 创建SQLite数据库