Мне нужно отобразить пользователю два списка - по одному с каждой стороны окна - и позволить пользователю выбирать, какое пространство экрана будет посвящено каждому. Я добился того, что много с помощью следующего кода:Как получить ширину столбца в сетке WPF с помощью GridSplitter?
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding FirstColumnWidth}" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ListBox Name="FirstColumn" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="0" Grid.Column="0" />
<GridSplitter Name="gridSplitter1" Width="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="0" Grid.Column="1" />
<ListBox Name="SecondColumn" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="0" Grid.Column="2" />
</Grid>
Однако, в то время как связывание будет получать исходную ширину первого столбца и размер их обоих, соответственно, используя GridSplitter, чтобы изменить их просто заменяет связывание с новым стоимость. Как я могу получить новое значение, чтобы сохранить его?
В идеале решение должно хорошо сочетаться с MVVM - я использую Caliburn и стараюсь, чтобы код был как можно более чистым (моя модель просмотра содержит свойство FirstColumnWidth, которое в настоящее время привязано).
Ширина устанавливается только в начале. ActualWidth - свойство для фактической ширины. Возможно, вы можете привязать ActualWidth как свойство записи (режим). Но я помню пост, где была проблема с этим, хотя это имело смысл. – Paparazzi
Вы должны посмотреть свойство ActualWidth. Проверьте это для получения дополнительной информации о том, как получить доступ к нему из модели просмотра: http://stackoverflow.com/questions/4438412/how-to-bind-a-read-only-wpf-control-property-eg-actualwidth-so -ITS-значение-это-ас –