2010-02-11 2 views
3

몇 시간 동안이 문제를 찾아 헤매고 있으며 어디서 잘못 될지 알 수 없습니다.IValueCOnverter가 작동하지 않습니다.

나는 Brushes.Red (Colors.Red 시도)를 반환하지만 다음과 같은 변환기가 있지만 여전히 운이 없다. 이제

xmlns:local="clr-namespace:Dashboard" 

나는 바인더 제본되어 다음과 같은 클래스가 : 나는 상단에 TEH 다음 네임 스페이스를 설정

<StackPanel Orientation="Vertical"> 
    <TextBlock Text="{Binding Value}" TextAlignment="Center" Foreground="{Binding Path=color, Converter={x:Static local:ColorConverter.Instance}}" Margin="2"/> 
</StackPanel> 

:

public class ColorConverter : IValueConverter 
{ 
    private static ColorConverter instance = new ColorConverter(); 
    public static ColorConverter Instance 
    { 
     get 
     { 
      return instance; 
     } 
    } 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return Brushes.Red; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new Exception("The method or operation is not implemented."); 
    } 
} 

지금 내 XAML에서 나는 다음과 같은 코드가 있습니다 스택 패널 :

데이터 바인딩 (값) 완벽하게 작동하지만 변환기를 걷어 싶지 않습니다, 나는 covnerter의 Convert 메서드에 중단 점을 설정하려고했지만 디버깅 할 때 트리거되지 않습니다. 디버거가 호출되지 않습니다.

누구든지이 문제에 대해 의견을 개진 할 수 있습니까?

답변

2

"값"과 "색상"이 필드이고 필드 바인딩이 작동하지 않아서 바인딩 자체가 작동한다고 말하는 것에 놀랐습니다.

+0

예, 컨버터블이 작동하고 있었지만 모든 것처럼 들렸으므로 저는 선언문을 살펴 보지 않았습니다. :) – Dave

1

글쎄, 여기 내 프로젝트에서 어떻게 했어. 내가하려는 것을 반영하도록 코드를 수정했습니다. 나는 그것이 도움이되기를 바랍니다. 왜 당신의 싱글 톤 접근 방식이 효과가 없을지 나는 대답 할 수 없다.

클래스 : 내 UserControl.Resources 요소에서

public class ColorConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return Brushes.Red; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new Exception("The method or operation is not implemented."); 
    } 
} 

:

<UserControl.Resources> 
    <local:ColorConverter x:Key="MyColorConverter" /> 
</UserControl.Resources> 

StackPanel의 요소 :이있는 경우

또한
<StackPanel Orientation="Vertical"> 
    <TextBlock Text="{Binding Value}" TextAlignment="Center" Foreground="{Binding Path=color, Converter={StaticResource MyColorConverter}}" Margin="2"/> 
</StackPanel> 

, 당신이 당신의 출력 창을 확인 않았다 것은 볼 수 어떤 오류? Bea Stollnitz's article on debugging databindings도 읽어야합니다. 그녀는 실제로 IValueConverters에 대한 특정 섹션을 가지고 있습니다.이 섹션은 언젠가는 당신에게 유용 할 것입니다.

+0

고마워요! 출력 창으로 이동 한 후 문제를 발견했습니다. 변수를 추가하려면 {set; 도망; } 그것에. 그래서 나는 그곳에 그들을 가지고 있지 않으며 출력은 "color"속성을 찾을 수 없다고 불평했다. 도움에 감사 드리며 링크에 감사드립니다. 즐겨 찾기에 추가되었습니다! –

+0

아 예, 속성 대신 필드를 사용했습니다. 나는 그 실수를하기 전에 (그리고 다시 한 번, 분명히)했다. :) – Dave

관련 문제