3

選択したアイテムに基づいてアイテムをフィルター処理しようとしている次のシナリオがあります。

アイテムにバインドされたリストボックスのサンプルは次のとおりです。

<ListBox ItemsSource="{Binding Source={StaticResource MyCollectionViewSource}, Mode=OneWay}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <DockPanel Visibility="{Binding Path=., Converter={StaticResource MyVisibilityConverter}}">
                <CheckBox IsChecked="{Binding IsChecked}" DockPanel.Dock="Left" />
                <TextBlock Text="{Binding Name}" VerticalAlignment="Center" />
            </DockPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

上記のリスト ボックスには、users タイプの項目があります。

私がやりたいことは、リストから現在のユーザーを除外することです(現在ログインしているユーザーがリストボックスにバインドされているユーザーと同じ場合、可視性を設定します)

このようにして、ユーザーは自分自身をタスクに追加することはできません。彼以外のユーザーしか追加できません。

コンバーター パラメーターを使用してビューモデルの CurrentUser プロパティにバインドしようとしたところ、このエラーが発生しました

A 'Binding' cannot be set on the 'ConverterParameter' property of type 'Binding'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.

だから私はこれを行うことができないと思います。バインドによってこれを達成する方法はありますか、またはバインドする前にリストでフィルターを実行する必要がありますか?

4

1 に答える 1

4

はい、ConverterParameter依存関係プロパティではないため、バインドできません。を使用しMultiBindingて、ユーザーのリストと現在のユーザーをVisibilityプロパティにバインドできます。次に、 a を使用しIMultiValueConverterて、複数のバインディングから可視性を判断します。

于 2013-10-02T20:41:28.060 に答える