[英]C#/WPF: ListView not updating (but when I check with Snoop, everything looks fine)
有誰知道為什么我的帶有以下代碼的ListView無法正常工作? 我用Snoop進行了檢查,ItemsSource看起來還不錯(當我啟動Snoop時,ListView向我顯示MyViewModel.MyCollection,但是在使用Visual Studio進行調試時卻什么也沒顯示?)
謝謝!
PS: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>
ViewModel看起來像這樣:
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輸出”窗口中查找,它將顯示您可能遇到的任何DataBinding錯誤,這可能有助於您解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.