1

シンプルなリストボックスに DataTrigger を配置すると、次の実行時例外が発生します。

ItemsSource を使用する前に、項目コレクションを空にする必要があります

データトリガーのない私のリストボックス(例外なし):

<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>

後者のコードの何が問題になっていますか?

4

2 に答える 2

7

スタイルを正しく宣言していないため、リストボックスのコンテンツとして設定されています.1つのスタイルを含むリストを手動で宣言しています.

この問題を解決するには、既存のStyle要素を要素でラップする必要があります。<ListBox.Style>

于 2012-07-25T14:59:34.780 に答える
3

Style をアイテムとして追加しましたが、ListBox.Styleタグを忘れました。もバインドしようとするItemsSourceため、エラーが発生します。

于 2012-07-25T14:59:13.220 に答える