Я довольно новичок в Xaml.
Я изучаю UWP (универсальная платформа Windows), и у меня есть больше кнопок, и я хочу привязать их свойство Background к свойству ViewModel, которое будет меняться во время некоторых событий.Как установить привязку в стиле?
Я реализовал INotifyPropertyChanged и все работает нормально (цвет кнопки меняется), когда я связать свойство фона в объявлении кнопки в XAML:
<Button Content="0" Grid.Column="0" Grid.Row="5"
Background="{Binding ButtonColor, Source={StaticResource AppViewModel}}" Style="{StaticResource BasicButton}"/>
StaticResource AppViewModel является ресурсом в App.xaml :
<Application.Resources>
<viewModel:AppViewModel x:Key="AppViewModel" />
</Application.Resources>
Я не знаю, как хорошо это объявить ViewModel для App.xaml, но это решение, которое я нашел для имеющих глобальные переменные (переменные удерживаются внутри ViewModel).
Теперь вернемся к моему вопросу: Как я не хочу, чтобы связать фона на каждой кнопке, я пытался добавить его в стиле, как это:
<Style x:Key="BasicButton" TargetType="Button">
<Setter Property="Background" Value="{Binding ButtonColor, Source={StaticResource AppViewModel}}" />
</Style>
Но теперь, когда переменная цвет меняется во время запуска приложения, пользовательский интерфейс больше не обновляется. Кажется, что привязанные свойства в стилях не реагируют на изменения переменных.
Что я делаю неправильно? Благодарим за любые ответы.
Вы пытались использовать viewmodel как DynamicResource? –
DynamicResource не существует в приложениях магазина uwp/windows api –
Причина, по которой он не работает, заключается в том, что стиль добавляется как staticResource, поэтому даже когда он изменяется под обложками, он уведомляет связанные кнопки. –