我有以下情况,我尝试根据所选项目过滤项目。
以下是与项目绑定的列表框示例:
<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.
所以我认为我不能这样做。有没有办法可以通过绑定实现这一点,或者我必须在绑定之前在列表中执行过滤器?
答案 0 :(得分:4)
是的,ConverterParameter
不是依赖项属性,因此您无法绑定它。您可以使用MultiBinding
将用户列表和当前用户绑定到Visibility
属性。然后使用IMultiValueConverter
确定多个绑定的可见性。