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>

上面的列表框有用户类型的项目。

我想要做的是从列表中过滤掉当前用户(如果当前登录的用户与在列表框中绑定的用户相同,则设置可见性)

这样用户就不能为某些任务添加自己。他只能添加他以外的用户。

我尝试使用转换器参数绑定到视图模型中的 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不是依赖属性,因此您无法绑定到它。您可以使用 aMultiBinding将用户列表和当前用户绑定到该Visibility属性。然后使用 aIMultiValueConverter从多个绑定中确定可见性。

于 2013-10-02T20:41:28.060 回答