2013-03-07 2 views
2

나는 컨트롤의 Visibility 속성에 컨트롤의 Tag 속성을 결합하려고 노력하지만, 내가 VS에서 다음과 같은 오류가 나타날 수"Self"바인딩이 작동하지 않는 이유는 무엇입니까?

객체 참조가

XAML은 개체의 인스턴스로 설정되지 않았습니다 아래처럼 :

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

아무도 그것을 해결하는 방법을 말할 수 있습니까?

+0

당신이 당신의 변환 코드를 게시 할 수 ElementName을 – ZSH

+1

를 시도? – michele

+5

마크 업이 정확합니다. 정적 리소스가 생성되지 않았거나 컨버터에 무언가가 발생했을 가능성이 큽니다. 해당 코드를 게시해야합니다 –

답변

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

내 코드가 귀하의 것과 동일합니다. 그것은 디자인으로 작동하지만 VS는 항상 "객체 참조가 객체의 인스턴스로 설정되지 않음"을 보여 주며 이는 디자인보기를 깨뜨릴 것입니다. –

+0

Visual Studio 2012의 디자이너는 컴파일이 필요한 어셈블리에 대해서는 약간 변덕 스럽습니다. . 같은 프로젝트에 정적 리소스가 있고 프로젝트를 컴파일해야하는 경우 일반적으로 디자인보기에 불만을 표시합니다. 또한 빌드 출력, 오류가 아닌 봐 ... –

+0

나는이 문제에 대해 많이 봤어. VS의 버그 인 것 같습니다. 어쨌든, 당신의 대답에 대해 감사드립니다! –

관련 문제