편집 : XAML에서 Minimum="1"
을 제거하면 바인딩이 제대로 작동합니다. SL 도구 키트 문제 일 수 있습니까?OC가 업데이트되면 ObservableCollection.Count에 바인딩이 업데이트되지 않습니다.
Silverlight Toolkit의 NumericUpDown 값을 ObservableCollection의 Count에 바인딩하려고합니다.
내 ViewModel의 생성자에서 컬렉션에 항목을 추가하고 그에 따라 바인딩을 업데이트합니다. 그러나 NumericUpDown의 값은 변경되지 않습니다 (1로 유지됨).
디자이너가 열려 있고 IntelliSense가 실행되는 동안 바인딩을 편집하면 값이 디자이너에서 올바른 값으로 업데이트됩니다.
내가 여기 뭔가 잘못 했습니까?
바인딩 코드
<toolkit:NumericUpDown x:Name="numberOfCubesUpDown" IsEnabled="True" Maximum="9" Minimum="1" Style="{StaticResource ButtonSpinnerHorizontalStyle}" Value="{Binding Path=Cubes.Count}" Height="30" FontSize="14">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ValueChanged">
<cmd:EventToCommand Command="{Binding ChangeNumberOfCubesCommand}" PassEventArgsToCommand="True"></cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
</toolkit:NumericUpDown>
뷰 모델 바인딩 정의 CubeSet는 ObservableCollection에에게 내가 CubeSet
Cubes = new CubeSet();
for (int i = 0; i < 6; i++) { Cubes.Add(new Cube()); }
,691 변경
public CubeSet Cubes
{
get { return _cubes; }
set
{
if (_cubes == value) { return; }
_cubes = value;
}
}
를 구현
IntelliSense가 실행될 때 Designer에서 언급 한 그 버크 때문에 DataContext가 정확하다고 생각합니다.하지만 ObservableCollection (CubeSet)이 업데이트 될 때 PropertyChanged가 실행되지 않습니다. –
흠, 나는 수집 카운트 값을 반환하고 수동으로 OnPropertyChanged ("Count")를 호출하거나 목록에서 항목을 제거 할 때마다 getter를 작성하려고합니다. 즉 ObservableCollection add/remove/set 메서드를 재정의해야한다는 의미입니다. 그래도 여전히 작동하지 않는다면 다른 것이어야합니다. –