여기 내 다른 문제와 비슷한 모양의 다른 질문을 찾고 있었지만 아무도 대답이 없습니다. 그래서, 여기에 ...Observable 컬렉션에 사용자 정의 컨트롤에서 바인딩 및 알림 받기
WPF와 MVVM 패턴을 사용하여 C# 응용 프로그램을 개발 중입니다. 나는 종속성 속성을 포함하는 UserControl을 (GroupTree라고합니다)가 :
그래서 정의 형 ChartGroupCollection의public static DependencyProperty ChartGroupsProperty = DependencyProperty.Register("ChartGroups", typeof(ChartGroupCollection), typeof(GroupTree),
new FrameworkPropertyMetadata() { DefaultValue=new ChartGroupCollection(), PropertyChangedCallback = OnChartGroupsChanged, BindsTwoWayByDefault = true });
public ChartGroupCollection ChartGroups
{
get { return (ChartGroupCollection)GetValue(ChartGroupsProperty); }
set
{
SetValue(ChartGroupsProperty, value);
}
}
private static void OnChartGroupsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (e.OldValue != e.NewValue)
{
// Nothing at the moment
}
}
그것 :
이public class ChartGroupCollection : ObservableCollection<ChartGroup>
{
}
ChartGroup이 INotifyProperty를 사용하는 속성이 들어 나는 독립적으로 확인했습니다 주 수집을 위해 실행해야하는 모든 변경 이벤트가 올바르게 수행되어야합니다.
제어 사용MainWindow.Xaml :
<Controls:ChartsControl x:Name="Charts1_1" Tree="{Binding ElementName=Groups, Path=ChartGroups}" />
는 내가 일하고자하는 때이다 :
<Controls:GroupTree x:Name="Groups" ChartGroups="{Binding MainGroups}" />
을 나는 GroupTree 제어에 ChartGroups 값에 바인딩 다른 제어 할 수 있습니다 GroupTree ChartGroups ChartsControl에 동적으로 변경 사항을 알리고 그에 따라 업데이트하기위한 값 변경. 그러나 지금은 기쁨이 없습니다. ChartsControl을 수동으로 새로 고치면 변경 내용이 표시되므로 데이터가 있습니다. MainGroups 속성에 바인딩을 시도했지만 작동하지 않을 수도 있습니다.하지만 그 중 하나는 아닙니다.
나는 무언가를 분명히 놓친 것 같습니다.하지만 확실하지 않습니다. 어떤 아이디어?
롭 PropertyChanged
는 결합 특성에 대해 발생 될 때 불행히도 PropertyChanged
콜백만을 호출
- 귀하의 제안에 따라 수정 됨. – VijayKP
이것은 앞으로 유용하게 사용할 수있는 매우 유용한 클래스이지만 불행히도 내 문제를 해결하지는 못합니다. 모든 변경 내용이 제대로 알림을 받더라도 사용자 정의 컨트롤을 통해 컬렉션을 바인딩해도 동적 업데이트가 발생하지 않습니다. 이것이 내가 왜이 문제를 일으키는 지 궁금해하는 이유입니다. –
@RobMarsh - ItemsControl, ListBox, TreeView를 사용하여 위의 사항을 신경 쓰지 않고도 필요한 기능을 무료로 사용하고 있습니다. ObservableCollection을 바인딩하기 위해 어떤 컨트롤을 사용하고 있는지 궁금합니다. – VijayKP