C#/wpf : ListView 업데이트되지 않음 (그러나 Snoop으로 확인하면 모든 것이 잘 보입니다)
문제
다음 코드가있는 내 목록 뷰가 작동하지 않는 이유를 아는 사람이 있습니까? 스누프로 확인했고 항목 소스는 괜찮은 것 같습니다 (그리고 스누프를 시작할 때 ListView는 MyViewModel.MyCollection을 표시하지만 Visual Studio로 디버깅 할 때 아무것도 표시하지 않습니까?)
고맙습니다!
추신 : mainWindow.xaml.cs에는 datacontext = mainViewModel이 있습니다
<ListView Grid.Row="1" Margin="38,50,0,168" HorizontalAlignment="Left" Name="listViewSelectDate" Width="105"
ItemsSource="{Binding Path=MyViewModel.MyCollection}"
SelectedItem="{Binding SelectedDate}" IsSynchronizedWithCurrentItem="True">
<ListView.View>
<GridView>
<GridViewColumn Header="Date" DisplayMemberBinding="{Binding Path=CalcDate}"/>
</GridView>
</ListView.View>
</ListView>
뷰 모델은 다음과 같습니다.
class MainViewModel : ViewModelBase
{
public SummaryViewModel MyViewModel
{
get { return _myViewModel; }
set { _myViewModel = value; RaisePropertyChanged("MyViewModel"); }
}
public MyDate SelectedDate
{
get { return _selectedDate; }
set { _selectedDate = value; RaisePropertyChanged("SelectedDate"); }
}
}
그리고
public class SummaryViewModel : ViewModelBase
{
public ObservableCollection<MyDate> MyCollection { get; set; }
}
그리고
public class MyDate
{
public DateTime CalcDate { get; set; }
}
해결책
누가 설정합니다 MyCollection
? 변경 알림을 제공하지 않으므로 바인딩은 변경되었음을 알지 못합니다. 로 변경:
private ObservableCollection<MyDate> _myCollection;
public ObservableCollection<MyDate> MyCollection
{
get { return _myCollection; }
set
{
_myCollection = value;
OnPropertyChanged("MyCollection");
}
}
또는 더 나은 것은 읽기 전용으로 만듭니다.
private readonly ICollection<MyDate> _myCollection = new ObservableCollection<MyDate>();
public ICollection<MyDate> MyCollection
{
get { return _myCollection; }
}
다른 팁
Visual Studio 출력 창을 살펴보면 문제를 해결하는 데 도움이 될 수있는 모든 데이터 바인딩 오류가 표시됩니다.
제휴하지 않습니다 StackOverflow