Как заставить DockPanel заполнить свободное место

mutable действительно существует, поскольку Вы выводите, чтобы позволить тому изменять данные в в других отношениях постоянной функции.

намерение состоит в том, что у Вас могла бы быть функция, которая "ничего не делает" к внутреннему состоянию объекта, и таким образом, Вы отмечаете функцию const, но Вы, возможно, действительно должны были бы изменить часть состояния объектов способами, которые не влияют на его корректную функциональность.

ключевое слово может действовать как подсказка к компилятору - теоретический компилятор мог поместить постоянный объект (такой как глобальное) в памяти, которая была отмечена только для чтения. Присутствие mutable подсказки, что это не должно быть сделано.

Вот некоторые допустимые причины объявить и использовать изменяемые данные:

  • Потокобезопасность. Объявление mutable boost::mutex совершенно разумно.
  • Статистика. Подсчет количества вызовов к функции, учитывая некоторых или все ее аргументы.
  • Memoization. Вычисление некоторого дорогого ответа, и затем хранение его для дальнейшего использования вместо того, чтобы повторно вычислить его снова.
18
задан Dave Clemmer 4 August 2011 в 21:14
поделиться

2 ответа

Bind the Width of the DockPanel to the ActualWidth of the ListBoxItem:

<DockPanel Width="{Binding ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}">
...

Another option: you could just redefine the ItemContainerStyle so that the ListBoxItem is stretched horizontally:

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
</ListBox.ItemContainerStyle>
28
ответ дан 30 November 2019 в 07:08
поделиться

DockPanel злы. Искушение использовать комбинацию StackPanel / DockPanel для сложных макетов приводит к «тупикам в макетах». Использовать сетку:

<Grid>
  <TextBlock HorizontalAlignment="Left"
...
  <TextBlock HorizontalAlignment="Right"
...
/Grid>

Я использую почти исключительно сетку , используя отдельную сетку для каждого блока элементов, которые «принадлежат друг другу»

5
ответ дан 30 November 2019 в 07:08
поделиться
Другие вопросы по тегам:

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