2013-07-02 3 views
0

Когда стандартный ListBox отключен, элементы в нем просто неактивны. Они все еще видны, несмотря на то, что они не доступны. Я хотел бы знать, если это возможно, и если да, то как скрыть эти элементы, когда ListBox отключен. Я не хочу удалять элементы из ItemSource или создавать для них временное хранилище.Скрыть элементы в ListBox, когда ListBox отключен

До сих пор я думал об изменении видимости ListBox, но это избавляет от всей вещи (включая пограничные линии).

+0

как вы связать их? – Tigran

+1

Простым решением является наличие двух списков. Один полный предметов, второй пуст в том же самом точном месте. Когда вам нужно скрыть элементы первого набора, это отключить/невидимо и установить второе на видимое/отключенное и наоборот. – Steve

+0

@Tigran У меня есть ObservableCollection, полный строк, привязанных к элементу ListBox ItemsSource в XAML: 'ItemsSource = "{Binding DataSource}" ' –

ответ

4

Вы можете связать Visibility из ListBoxItem в IsEnabled из ListBox

<ListBox ItemsSource="{Binding DataSource}"> 
    <ListBox.Resources> 
     <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 
    </ListBox.Resources> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="Visibility" Value="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType=ListBox}, Converter={StaticResource BooleanToVisibilityConverter}}" /> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
0

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

Затем, когда вы включаете окно обратно, скройте пустой и покажите реальный.

Надеюсь, это поможет.

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