微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

另一个“在使用ItemsSource之前,Items集合必须为空”

如何解决另一个“在使用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 举报,一经查实,本站将立刻删除。