Моя проблема кажется той, что есть у других, так как я нашел несколько других похожих вопросов (например, WPF - hiding listbox items). В этом конкретном вопросе/ответе я получил больше, чем что-либо еще, что нашел вместе. Проблема, с которой я сталкиваюсь, заключается в том, что когда я реализую DataTrigger
, так как он находится в ответе (немного изменен для ListView
, а не ListBox
), я получаю надлежащее свертывание элемента, но для некоторых вещей моя тема кажется вернулись к умолчанию, вместо того, чтобы использовать мой стиль ModernUI.Как я действительно скрываю ListViewItem без разрушения моей темы?
Вот что я добавил к моему ListView
для того, чтобы получить разрушенные элементы по-настоящему быть свернуты:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Visibility}" Value="Collapsed">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
Вот пример из пунктов отфильтрованных перед тем добавив выше:
(обратите внимание на оранжевый парение элемента, который не должен быть там)
Вот пример из пунктов отфильтрованных после добавляющих выше:
(обратите внимание на индикаторе парения/выбор теперь как-то синий, и мои текстовые поля больше не размер соответственно)
Любых помощь, которую может предоставить любой, будет очень благодарна, и спасибо уже за то, что нашли время, чтобы прочитать это.
Боковое примечание: Пожалуйста, не просто скажите мне, чтобы использовать фильтр CollectionView
для фильтрации. Я провел большую часть своего дня вчера, сражаясь с этим, и из-за использования BindingList<>
вместо ObservableCollection<>
он просто не будет работать для моей ситуации.
Замечание: Почему вы используете BindingList в WPF? –
Потому что, основываясь на других предложениях, найденных здесь, мой пользовательский класс, пузырящийся в результате изменений через привязку, мог быть реализован с одним событием, в отличие от прыжка через многие обручи, которые я не понял. Я довольно новичок в WPF, поэтому я уверен, что это будет непросто для других, но «BindingList <>» - это решение, которое сработало (и я не создаю его для Silverlight). – Lance
Я не могу помочь в вашем конкретном вопросе, но AFAIK BindingList предназначен для WindowsForms и ObservableCollection для WPF. Я бы сказал, что вы пропустите изменения коллекции, если используете BindingList. –