【问题标题】:Converter parameter binding to viewmodel property转换器参数绑定到 viewmodel 属性
【发布时间】:2013-10-09 09:26:28
【问题描述】:

我有以下场景,我试图根据所选项目过滤项目。

这是列表框绑定到项目的示例:

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

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

【问题讨论】:

    标签: wpf xaml ivalueconverter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 2013-06-25
      • 2011-02-01
      • 2011-08-26
      • 2011-05-22
      • 1970-01-01
      • 2012-07-20
      相关资源
      最近更新 更多