所以..。我已经把TreeView绑定到ObservableCollection上了。TreeView相当大,所以更新需要一些时间,但是它工作得很好。所以..。我决定使用IsAsync=True,在TreeView更新绑定时显示一些加载动画。但我得到了一个错误:“不能在不可变的对象实例上动画'Background.Color‘”
<TreeView Grid.Row="2" x:Name="LevelObjects"
Style="{StaticResource TreeViewStyle}"
ItemsSource="{Binding Path=Items, IsAsync=True}" >...
private ObservableCollection<LevelTreeItemViewModel> items;
public ObservableCollection<LevelTreeItemViewModel> Items
{
get
{
if (items == null)
{
items = GetLevelObjects();
}
return items;
}
}
LevelTreeItemViewModel是VM的LevelTreeItemControl.xaml女巫有自定义风格与令人敬畏的动画。但最重要的是,它不能从其他线程初始化。如果我剪掉LevelTreeItemControl.xaml中的所有动画,它可以很好地与IsAsync一起工作。怎么修呢?
发布于 2014-08-22 01:51:53
好吧,我发现了一个例外:就像我难过一样,ItemSource for TreeView是一个不同的UserControl,女巫使用自定义风格和令人敬畏的动画。但是这些动画通过IsSelected通过RelativeSource绑定到属性上。因此,当TreeView更新不同线程中的绑定(使用IsAsync=true)时,项不能绑定到TreeViewItem.IsSelected属性。所以,我把这些动画在TreeViewItem风格,它工作得很好!
https://stackoverflow.com/questions/25427378
复制相似问题