项目集合必须在使用ItemsSource前空(Items collection must be em

2019-07-30 15:08发布

如果我把一个DataTrigger一个简单列表框我得到这个运行时异常:

项目集合必须在使用ItemsSource前空

我的列表框没有datatrigger(无例外):

<ListBox ItemsSource="{Binding EdgedBoards}" SelectedItem="{Binding SelEdgedBoard, Mode=TwoWay}" DisplayMemberPath="Name">
    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}" 
               BasedOn="{StaticResource {x:Type ListBoxItem}}">

            <Setter Property="IsSelected"
                    Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

我与列表框DataTrigger

<ListBox ItemsSource="{Binding EdgedBoards}" SelectedItem="{Binding SelEdgedBoard, Mode=TwoWay}" DisplayMemberPath="Name">
    <Style TargetType="{x:Type ListBox}" BasedOn="{StaticResource {x:Type ListBox}}">
        <Setter Property="Focusable" Value="True" />

        <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=EdgedBoardsAdd_UC, Path=Visibility}" Value="Visible">
                <Setter Property="Focusable" Value="False" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

出了什么问题,后者的代码?

Answer 1:

你是不是正确的声明风格,所以它被设置为列表框的内容 -你是手工声明包含一个样式列表。

你应该换你现有的Style与元素<ListBox.Style>元素来解决这个问题。



Answer 2:

您添加的Style 作为一个项目 ,你忘了ListBox.Style标签。 既然你也尝试绑定ItemsSource你的错误。



文章来源: Items collection must be empty before using ItemsSource