2011-08-02 11 views
1

일부 속성이 포함 된 원형 계기를 나타내는 WPF 사용자 정의 컨트롤이 있습니다. 직접 응용 프로그램에서 사용할 때 모든 것이 잘 작동하지만 속성을 테스트하고 예상되는 애니메이션을 시뮬레이트하기 위해 Expression Blend에서로드하면 컬렉션 종속성 속성이 필요합니다. Expression Blend를 사용하여 컬렉션 속성에 일부 항목을 추가 할 때 문제가 발생합니다. "SetValue"가 호출되지 않았습니다! 내가 도대체 ​​뭘 잘못하고있는 겁니까?컬렉션 종속성 속성이 작동하지 않습니다.

public static readonly DependencyProperty RangesProperty = 
     DependencyProperty.Register("Ranges ", typeof(CircularRangeInfoList), typeof(UserControl1), new FrameworkPropertyMetadata(new CircularRangeInfoList())); 

    [Category("Test Collection")] 
    public CircularRangeInfoList Ranges 
    { 
     get { return (CircularRangeInfoList)GetValue(RangesProperty); } 
     set { SetValue(RangesProperty, value); } 
    } 
public class CircularRangeInfoList : ObservableCollection<CircularRangeInfo> 
{ 
    public CircularRangeInfoList() 
    { 
    } 
} 

답변

1

이는 속성을 설정하지 않았기 때문에 (속성이 이미 설정된) 컬렉션을 변경하기 때문입니다. 컬렉션의 변경 사항을 감시해야하는 경우 CollectionChanged 이벤트에 대한 처리기를 추가해야합니다.

자세한 내용은 question을 참조하십시오.

+0

잘 나는 입니다. 컬렉션 외부의 알림 수신에 대한 내 UserControl1 내부에 있음을 의미합니다. 내가 이미 재산을 정한 것과 같이 일했지만 단 한 번만 ... 내 컬렉션을 바꾸는 것은 무엇을 의미합니까? – rsleiman

+0

@rsleiman - "컬렉션에 항목을 추가하십시오"라고 말한 것은 컬렉션을 변경한다는 것입니다 (즉, 항목 추가, 항목 제거, 항목 이동 또는 항목 교체). 콜렉션이 변경된시기를 알고 싶으면 CollectionChanged를 사용해야합니다. 그것은 속성이 변경 될 때와 다릅니다. – CodeNaked

+0

오, 알았지 만 나중에 사용자 정의 목록을 인스턴스화하여 CollectionChanged 이벤트를 지원하는 코드를 변경했습니다. 잘 작동하는 것 같습니다. 고맙습니다. – rsleiman

관련 문제