У меня есть класс под названием Question
, который представляет собой вопрос и это ответ. У меня есть приложение, которое отображает ObservableCollection объектов Question
. Каждый Question
визуализируется как StackPanel, который содержит TextBlock для формулировки вопросов, и TextBox, чтобы пользователь мог ввести ответ. Вопросы обрабатываются с помощью элемента ItemsControl, и я изначально задал стиль StackPanel вопросов, используя ключ StaticResource под названием «IncorrectQuestion» (определен в разделе UserControl.Resources на странице). В разделе UserControl.Resources я также определил ключ calld 'CorrectQuestion', который мне нужно как-то применить к StackPanel вопроса, когда пользователь правильно ответит на вопрос. Моя проблема в том, что я не уверен, как динамически изменять стиль StackPanel, особенно в рамках ограничений класса ViewModel (т. Е. Я не хочу помещать код выбора стиля в код кода View). Мой класс Question
имеет свойство IsCorrect
, которое точно устанавливается при ответе на исправление. Я хотел бы как-то отразить значение IsCorrect
в виде выбора стиля. Как мне это сделать?Silverlight ~ MVVM ~ Динамическая настройка свойства Style на основе значения модели
3
A
ответ
3
Использование преобразователя значений является решением.
<Grid x:Name="LayoutRoot" Background="White">
<Grid.Resources>
<local:BoolToStyleConverter x:Key="Correctness">
<local:BoolToStyleConverter.FalseValue>
<Style TargetType="TextBox">
<Setter Property="Background" Value="Salmon" />
</Style>
</local:BoolToStyleConverter.FalseValue>
<local:BoolToStyleConverter.TrueValue>
<Style TargetType="TextBox">
<Setter Property="Background" Value="AliceBlue" />
</Style>
</local:BoolToStyleConverter.TrueValue>
</local:BoolToStyleConverter>
</Grid.Resources>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Question}" />
<TextBox x:Name="Answer" Text="{Binding Answer, Mode=TwoWay}"
Style="{Binding IsCorrect, Converter={StaticResource Correctness}}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Вы можете найти основу для BoolToStyleConverter
основана на этом blog post. Создано как: -
public class BoolToStyleConverter : BoolToValueConverter<Style> { }
Смежные вопросы
- 1. Настройка настраиваемого свойства на странице WPF/Silverlight
- 2. Silverlight MVVM: изменение цвета границы ячейки в DataGrid на основе связанного значения в Silverlight
- 3. ember - настройка свойства контроллера на основе атрибутов пользователя/модели?
- 4. Настройка свойства базовой модели
- 5. Silverlight: свойства управления программным связыванием
- 6. silverlight - изменение значения свойства изменилось
- 7. Авто настройка свойства модели данных
- 8. Динамическая настройка заголовка столбца Silverlight DataGrid
- 9. Silverlight MVVM ListBoxItem IsSelected
- 10. Настройка маршрута Camel для тестирования на основе значения статического свойства
- 11. Настройка свойства Style метки WPF в коде?
- 12. Динамическая настройка свойства log4net с использованием common.logging
- 13. Рендеринг html snippet во взгляде на основе значения свойства модели
- 14. Преобразование свойства Json на основе значения свойства
- 15. Кросс-браузерная динамическая настройка свойства CSS
- 16. MVVM With Silverlight
- 17. MVVM и Silverlight help
- 18. Silverlight UserControl и MVVM
- 19. Silverlight MVVM header detail
- 20. MVVM: обновление свойств ViewModel на основе свойств модели
- 21. MVVM дублируя свойства модели в ViewModel
- 22. MVVM, ViewModelLocator, динамически показать вид с ViewModel на основе свойства
- 23. MVVM и безопасность на основе ролей
- 24. MVVM в Silverlight
- 25. Как агрегировать QuerySet на основе свойства модели?
- 26. Частичная сериализация модели на основе атрибута свойства
- 27. Silverlight MVVM Изолированное хранилище
- 28. Silverlight MVVM vs NON-MVVM
- 29. Оценка MVVM на модели
- 30. MVVM Silverlight Framework Варианты
Я пробовал использовать конвертер значений, но я не могу заставить его работать. Я думаю, что я просто делал что-то неправильно. Я вернусь к этому варианту. Ура! – eponymous23