2013-10-02 2 views
3

У меня есть следующий сценарий, когда я пытаюсь фильтровать элементы на основе выбранного элемента.Преобразование параметров преобразователя в свойство viewmodel

Вот пример, который ListBox связан с пунктами:

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

, приведенный выше список коробка имеет пункт пользователей типа.

То, что я хочу сделать, это отфильтровать текущего пользователя из списка (Установить видимость, если пользователь в настоящее время вошли в систему так же, как пользователь, получающий обязан в ListBox)

Таким образом, пользователь не может добавить сам по какой-то задаче. Он может добавлять только других пользователей.

Я попытался с помощью параметра преобразователя для привязки к свойству CurrentUser в ViewModel и я получаю эту ошибку

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

Да, ConverterParameter не является зависимым, поэтому вы не можете привязываться к нему. Вы можете использовать MultiBinding, чтобы привязать список пользователей и текущего пользователя к объекту Visibility. Затем используйте IMultiValueConverter, чтобы определить видимость из нескольких привязок.

Смежные вопросы