У меня возникла проблема с программным изменением цвета Toggle в TreeView. я определил в ResourceDictionary SolidColorBrush с:
Изменение цвета переключателя (TreeView) в wpf программно
<SolidColorBrush x:Key="FillBrush" Color="#000000" />
я создал стиль для ToggleButton в ResourceDictionary, а также:
<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid Width="auto" Height="auto" Background="Transparent" ShowGridLines="True">
<Path Fill="{StaticResource FillBrush}" x:Name="ExpandPath" HorizontalAlignment="Center" VerticalAlignment="Center"
Data="M 0 0 L 0 2 L 6 0 z M 6 2 L 6 0 L 0 2 z">
</Path>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Data" TargetName="ExpandPath" Value="M 0 0 L 0 8 L 2 0 z M 2 8 L 2 0 L 0 8 z"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
В коде я пытаюсь программно изменить значение ключа FillBrush:
SolidColorBrush cc = (SolidColorBrush)Resources["FillBrush"];
cc.Color=c.Color;
но когда я меняю его, Togg Кнопка le не меняется.
Любые подсказки по изменению цвета существующего компонента? Я немного смущен шаблонами компонентов через ResourceDictionary, поэтому я думаю, что там что-то не так. Спасибо за помощь
EDIT: в коде я использую StaticResource. Я также попробовал его с DynamicResource, но ничего не произошло, и значение цвета не изменилось.
EDIT 2: если я проверить значение в ресурс FillBrush с:
MessageBox.Show(((SolidColorBrush)Resources["FillBrush"]).Color.ToString());
значение заменяется новым значением. Так оно и работает. В этом случае должно быть что-то не так, если использовать его в стиле ToggleButton.
Ваша проблема кажется очень похожей по своему характеру той, что предлагается здесь: http://stackoverflow.com/questions/15819796/change-wpf-button-background-image-programatically/15819880#15819880 Ответы и обсуждение могут быть полезно для вас. – Clint
thx для подсказки я проверю это. – piggy
Вы можете найти 'ControlTemplate' по умолчанию для' ToggleButton' на [этой веб-странице] (http://msdn.microsoft.com/en-us/library/cc296245 (v = vs.95) .aspx). Альтернативно, если это не помогает, возможно, вы могли бы достичь того, что хотите использовать привязки или обработчики событий? Попробуйте взглянуть на него с другого направления. Какова ваша общая цель? – Sheridan