[英]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.