2012-10-14 2 views
0

좋아, 이건 생각할 필요도없는 줄 알았지 만 분명히 뭔가 잘못하고있는 것 같아. 문제는 확장 WPF 툴킷 DoubleUpDown 컨트롤의 "위로"및 "아래로"버튼을 클릭 할 때 값이 올바르게 업데이트되지 않는다는 것입니다. Up을 클릭하면 컨트롤의 값은 변경되지만 뷰 모델은 업데이트되지 않습니다. 위로부터 아래로 클릭만으로 변경된 경우에만 모델이 업데이트되고 이전 값으로 업데이트됩니다. 재생하려면Extended WPF Toolkit의 DoubleUpDown, 내가 뭘 잘못하고 있니?

, 나는 간단한 뷰 모델과 같이 사용 :

public class ViewModel : INotifyPropertyChanged 
{ 

    public ViewModel() 
    { 
     MyValue = 0.5; 
    } 

    private double _myValue; 
    public double MyValue 
    { 
     get { return _myValue; } 
     set 
     { 

      _myValue = value; 
      PropertyChanged(this, new PropertyChangedEventArgs("MyValue")); 

     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged = delegate { }; 
} 

그리고 내 MainWindow.xaml는 DoubleUpDown 컨트롤과 레이블이 모두 뷰 모델 년대에 양방향 방식으로 바인딩 아래의 코드처럼 보인다 MyValue 특성 :

public MainWindow() 
    { 
     DataContext = new ViewModel(); 
     InitializeComponent(); 
    } 
:
<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" 
     Title="MainWindow" Height="100" Width="200"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <xctk:DoubleUpDown 
      Value="{Binding MyValue, Mode=TwoWay}" 
      Increment="0.5" 
      Minimum="0.0" 
      Maximum="10" 
      ValueChanged="DoubleUpDown_ValueChanged" 
      /> 
     <Label Grid.Column="1" Content="{Binding MyValue, Mode=TwoWay}"/> 
    </Grid> 
</Window> 

그리고 숨김 코드에서, 나는 MainWindow를 생성자에서 DataContext를 설정

는 뷰 모델의 인스턴스가 될

답변

1

DoubleUpDown 컨트롤의 기본 바인딩 업데이트 논리는 LostFocus입니다. 당신은 다음과 같이 바인딩에 명시 적으로 UpdateSourceTrigger=PropertyChanged을 설정해보십시오 -

<xctk:DoubleUpDown 
     Value="{Binding MyValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
     Increment="0.5" 
     Minimum="0.0" 
     Maximum="10" 
     ValueChanged="DoubleUpDown_ValueChanged"/> 
+0

감사합니다, 당신은 도움 다행 :-) –

+0

보호기 삶입니다. :) –