2013-02-24 1 views
0

Windows Phone 8에서 프로그래밍하기가 처음입니다. "바인딩"을 연구 중입니다. 슬라이더의 속성 "값"을 바인딩하려고 시도하지만 응용 프로그램을 실행할 때 변경 사항이 표시되지 않습니다. 코드 숨김 클래스에서Windows Phone 8에서 슬라이더의 바인딩 값 속성 없음

public class VMSlider : VMBase { 
    private int _valor; 

    public VMSlider() { 
     _valor = 43; 
    } 

    public int Valor { 
     get { return _valor; } 
     set { 
      _valor = value; 
      RaisePropertyChanged("Valor"); 
     } 
    } 
} 

:

public class VMBase : INotifyPropertyChanged { 
    public event PropertyChangedEventHandler PropertyChanged; 

    public VMBase() {} 

    public void RaisePropertyChanged(string PropertyName) { 
     if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(PropertyName)); 
    } 
} 

뷰 모델 클래스는 이것이다 :

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <StackPanel> 
     <Slider Minimum="1" Maximum="100" Value="{Binding Valor}" /> 
    </StackPanel> 
</Grid> 

ViewModelBase 클래스는 이것이다 :

XAML 코드는 이것이다 내 XAML y는 다음과 같이 작성합니다.

this.DataContext = new ViewModel.VMSlider(); 

이유를 말해야합니다.

감사합니다.

+1

디버거가 연결된 상태에서 Visual Studio의 출력 창에 바인딩 오류가 표시됩니까? –

+0

"당신은 어떤 변화도 보지 못했다"고 말할 때, 그것은 변하지 않는 것을 무엇을 검사하고 있습니까? Valor를 코드에서 설정하고 슬라이더가 변경되기를 기대합니까? 반대의 경우도 마찬가지입니까? –

+0

또한 VMSlider를 새로 만들 때에 따라 VMSlider의 생성자에서 public setter를 사용하여 _valor를 설정하면 속성 변경 알림이 실행됩니다 (바인딩이 이미 해당 지점에 설정된 경우). –

답변

2

Slider 컨트롤의 Value 속성은 Double입니다. Valor가 잘못된 유형의 값이기 때문에 바인딩이 작동하지 않습니다.

Value Converter 또는 change Valor to a Double을 구현해야합니다.

+0

대단히 감사합니다. D – batressc

관련 문제