Есть стандартная кнопка. В ControlTemplate для Button описаны поведения стиля при состоянии IsEnable, IsMouseOver и IsPressed. Есть ли такая возможность нестандартной обработки в зависимости от свойства в коде C#? Например, свойстве в коде на C# может принимать числа 0, 1, 2 и 3. Значит, в зависимости от числа при поведении, например IsEnable, кнопка должна окраситься в один цвет из четырёх.
Поискал в интернете и сделал на отдельной программе вот такой тестовый код:
<ControlTemplate x:Key="ButtonTemplate" TargetType="Button">
<Border BorderBrush="LightGray" BorderThickness="1" CornerRadius="3" Name="border"
TextBlock.Foreground="LightGray" Background="Gray">
<ContentPresenter RecognizesAccessKey="True" Margin="{TemplateBinding Padding}"></ContentPresenter>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="local:PeakHelper.IsPeak" Value="True">
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="Background" Value="DarkGray"></Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="Yellow"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
public class PeakHelper : DependencyObject
{
public static readonly DependencyProperty IsPeakProperty = DependencyProperty.RegisterAttached("IsPeak", typeof(bool), typeof(PeakHelper), new PropertyMetadata(false));
public static void SetIsPeak(DependencyObject target, Boolean value)
{
target.SetValue(IsPeakProperty, value);
}
public static bool GetIsPeak(DependencyObject target)
{
return (bool)target.GetValue(IsPeakProperty);
}
}
Но столкнулся с проблемой: не видит почему-то пространстве имён этот код C#: ругается на триггер свойства Property="local:PeakHelper.IsPeak".