转换器参数绑定到viewmodel属性

时间:2013-10-02 20:34:13

标签: wpf xaml ivalueconverter

我有以下情况,我尝试根据所选项目过滤项目。

以下是与项目绑定的列表框示例:

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

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

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

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

我尝试使用converter参数绑定到viewmodel中的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.

所以我认为我不能这样做。有没有办法可以通过绑定实现这一点,或者我必须在绑定之前在列表中执行过滤器?

1 个答案:

答案 0 :(得分:4)

是的,ConverterParameter不是依赖项属性,因此您无法绑定它。您可以使用MultiBinding将用户列表和当前用户绑定到Visibility属性。然后使用IMultiValueConverter确定多个绑定的可见性。