Ручка Multiselect в ListView (WPF + MVVM) [дубликат]

Я думаю, что для этого есть очень простой / старый метод, который поддерживается всеми браузерами даже IE 6/7. Мы могли бы просто установить letter-spacing на большое отрицательное значение в родительском, а затем вернуть его к normal в дочерние элементы:

body { font-size: 24px }
span { border: 1px solid #b0b0c0; } /* show borders to see spacing */

.no-spacing { letter-spacing: -1em; } /* could be a large negative value */
.no-spacing > * { letter-spacing: normal; } /* => back to normal spacing */
<p style="color:red">Wrong (default spacing):</p>

<div class="">
  <span>Item-1</span>
  <span>Item-2</span>
  <span>Item-3</span>
</div>

<hr/>

<p style="color:green">Correct (no-spacing):</p>

<div class="no-spacing">
  <span>Item-1</span>
  <span>Item-2</span>
  <span>Item-3</span>
</div>

5
задан Athari 25 June 2013 в 23:46
поделиться

1 ответ

Я думаю, что поведение, которое вы видите, связано с VirtualizingStackPanel.IsVirtualizing по умолчанию True при привязке к ItemsSource из ListBox

, если вы, например, установите свой ListBox, например:

<ListBox VirtualizingStackPanel.IsVirtualizing="False" SelectionMode="Extended" ItemsSource="{Binding DataContext.ResultList, RelativeSource={RelativeSource AncestorType=Window}}">

или

<ListBox ...>
  ...
  <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel />
    </ItemsPanelTemplate>
  </ListBox.ItemsPanel>
</ListBox>

, тогда вы должны увидеть, что все ваши связанные объекты имеют свои IsSelected обновленные соответственно с помощью Ctrl + A или Shift + ...

Свойства, такие как Count коллекции даже с виртуализацией, сообщают о правильном значении для размещения таких вещей, как вычисление требуемого ScrollBar.Height. Элементы, которые находятся за пределами порта View, не отображаются, поэтому привязки к ним не действуют до тех пор, пока они не будут использованы.

5
ответ дан Viv 26 August 2018 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: