Как связать автоматически устанавливаемый параметр в WPF с MVVM - PullRequest
0 голосов
/ 16 марта 2020

Итак, вот ситуация: у меня есть ярлык (пользовательский элемент управления, если он имеет значение), и мне нужно получить его ширину и высоту с помощью MVVM. Однако, если я установлю один из параметров на {Binding XXX}, они не будут автоматически выбраны автоматически, и поэтому при изменении шрифта во время выполнения их размер не обновляется.

Я читал об использовании ActualWidth / Height, это звучит как то, что мне нужно, кроме того факта, что это не параметр зависимости, поэтому мне кажется, что мне нужно отключить MVVM для него.

Есть ли лучшие решения?

РЕДАКТИРОВАТЬ

Ну, элемент в XAML не выглядит ничего особенного. Всего миллион привязок.

<local:DraggableLabel 
                    Content="123" 
                    Margin="{Binding Label2Position, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
                    HorizontalAlignment="Left" 
                    VerticalAlignment="Top" 
                    FontFamily="{Binding Label2Font.Family}" 
                    FontSize="{Binding Label2Font.Size}" 
                    FontWeight="{Binding Label2Font.Weight}" 
                    FontStyle="{Binding Label2Font.Style}" 
                    Foreground="{Binding Path=Label2Color, 
                                    UpdateSourceTrigger=PropertyChanged, 
                                    Converter={StaticResource ColorToBrushConverter}
                           }"/>

По умолчанию

Width="Auto"

, который не должен быть написан, но может (ничего не меняет). Это делает его изменить размер при изменении шрифта. Если я установлю его на

Width="Binding {Label1Width}"

Привязка работает нормально, но я больше не получаю автоматическую настройку.

1 Ответ

1 голос
/ 16 марта 2020

Хорошо, я нашел обходной путь.

Так как я создал собственный элемент управления, я смог создать новый DependencyProperty с именем RealWidth, затем я добавил событие OnSizeChanged, которое обновляет его значением ActualWidth, который вы можете получить изнутри элемента каждый раз, когда изменяется размер элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...