Я пытаюсь настроить мои ToggleButtons, чтобы при проверке они сказали «Да» зеленым, а когда не отмечены, скажите «Нет» красным.ToggleButton Style работает только на последнем ToggleButton
Я создал следующий стиль, который находится в моем словаре ресурсов Styles.
<!-- ToggleButtons -->
<Style x:Key="YesNoToggleStyle" TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="SpringGreen" />
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="Yes"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Background" Value="Crimson" />
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="No"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
Это работает ... отчасти. Если ToggleButton является последним из любого значения, он отображается правильно. Все предыдущие кнопки с одинаковым значением пустые. Высота также уменьшалась, но я исправил это с помощью Set 'Height' выше триггеров. Чтобы проиллюстрировать это, когда новая запись создается она выглядит следующим образом:
и после того, как я нажал на кнопки 1, 2 и 3 и 1 раз:
я изначально имел стиль отсчитываются от окружающих сетка:
<Grid>
...
<Grid.Resources>
<Style BasedOn="{StaticResource YesNoToggleStyle}" TargetType="{x:Type ToggleButton}" />
</Grid.Resources>
Но изменения, которые так каждый ToggleButton ссылается на стиль индивидуально (<ToggleButton Style="{StaticResource YesNoToggleStyle}" ... />
) не сделал разницу.
Я посмотрел Customizing the toggle state of a toggle button in wpf и Override ToggleButton Style, где эффект один и тот же, но они говорят о внешних изображениях, а мои проблемы - внутри wpf.
Я также посмотрел на второй ответ: i want to change backcolor of toggle button when toggle button ischecked and viceversa in WPF а) у меня только смесь + SketchFlow предварительного просмотра, который поставляется с VS2012, и б) я в общей сложности нуб с смесью и не могу получить от Select the "Checked State"
до Reset the Background Color
инструкции в ответе (плюс я был бы удивлен, если для этой задачи требуется инструмент blend).
Может ли кто-нибудь показать мне, что делать, чтобы получить несколько ToggleButtons, чтобы использовать тот же стиль правильно?
спасибо. Это делает работу. Несколько вопросов, если я могу: есть ли решение, отличное от ToolBar (мне нравится эффект нажатия кнопки с standth ToggleButton)? Кроме того, почему моя попытка не работает, что я делаю неправильно? – mcalex
@mcalex: ваш код выглядит нормально. Мне кажется, проблема в шаблоне управления ToggleButton.Я бы рассмотрел этот шаблон и стиль, определенный в ToolBar, чтобы сравнить их. Обратите внимание: этот стиль не будет применяться, если кнопки переключения будут помещены в сетку напрямую, а не элементы управления - это определенно причина для поиска шаблона управления. – Dennis