如何解决另一个“在使用ItemsSource之前,Items集合必须为空”
| 我对此xaml有一个控件: <Controls:TreeView x:Name=\"MachineGroupsTree\" Style=\"{StaticResource MachineGroupStyle}\" >
<i:Interaction.Triggers>
<i:EventTrigger EventName=\"selecteditemchanged\">
<i:InvokeCommandAction Command=\"{Binding SetCurrentManagedobjectNodeCommand}\" CommandParameter=\"{Binding SelectedItem,ElementName=MachineGroupsTree,Mode=OneWay}\"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Controls:TreeViewItem>
<Controls:TreeViewItem.HeaderTemplate>
<DataTemplate>
<TextBlock Text=\"Loading...\" Style=\"{StaticResource LoadingStyle}\" />
</DataTemplate>
</Controls:TreeViewItem.HeaderTemplate>
</Controls:TreeViewItem>
</Controls:TreeView>
有了以下代码:
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register( \"ItemsSource\",typeof( IEnumerable ),typeof(
MachineGroupTreeViewControl ),new PropertyMetadata( null,new PropertyChangedCallback(
OnItemSourceChanged ) ) );
public IEnumerable ItemsSource {
get {
return ( IEnumerable )GetValue( ItemsSourceProperty );
}
set {
ClearValue( ItemsSourceProperty );
SetValue( ItemsSourceProperty,value );
}
}
static void OnItemSourceChanged( object sender,DependencyPropertyChangedEventArgs args ) {
// Get reference to self
MachineGroupTreeViewControl source = ( MachineGroupTreeViewControl )sender;
// Add Handling Code
// ---------------------------------------------
// EXCEPTION HERE !!!
source.MachineGroupsTree.ItemsSource = ( IEnumerable )args.NewValue;
}
而且我得到了众所周知的“使用ItemsSource之前,Items集合必须为空”的异常,但是我不明白为什么,xaml中没有添加的项!
解决方法
当然有:
<Controls:TreeViewItem>
<Controls:TreeViewItem.HeaderTemplate>
<DataTemplate>
<TextBlock Text=\"Loading...\" Style=\"{StaticResource LoadingStyle}\" />
</DataTemplate>
</Controls:TreeViewItem.HeaderTemplate>
</Controls:TreeViewItem>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。