Поскольку в WPF так просто менять фон нельзя при установки IsEnabled = false у кнопки, то я сделал свой Стиль и изменил шаблон и указал начальные сеттеры: фон, цвет шрифта итд. Так же 1 триггер на чтобы менять фон и несколько мультитриггеров, чтобы при смене контента кнопки и когда кнопка будет актив = false, менялся цвет шрифта, но фон такой же:
<Style TargetType="Button" x:Key="ButtonForeground">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Background" Value="MediumAquamarine" />
<Setter Property="Foreground" Value="MediumBlue" />
<Setter Property="IsEnabled" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter x:Name="MyContentPresenter"
Content="{TemplateBinding Content}"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsEnabled" Value="False"></Condition>
<Condition Property="Content" Value="1"></Condition>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="#999"/>
<Setter Property="Foreground" Value="Blue"/>
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsEnabled" Value="False"></Condition>
<Condition Property="Content" Value="2"></Condition>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="#999"/>
<Setter Property="Foreground" Value="Green"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
Но проблема в том, что когда я применяю стиль к кнопке (в коде), а потом переопределить цвет фона (тоже в коде), этот фон не меняется на тот, который указан в стиле, меняется только цвет контента, актив же стоит false. Мне же нужно чтобы мультитриггеры полноценно применялись и я мог переопределять фон. Вот код в c#:
int c = 0;
public MainWindow()
{
InitializeComponent();
asdasd.Style = Application.Current.Resources["ButtonForeground"] as Style;
asdasd.Background = Brushes.Black; // - Вот тут (если закоментить строку то норм)
}
private void Button_Click(object sender, RoutedEventArgs e)
{
asdasd.Content = c++.ToString();
}
private void asdasd_Click(object sender, RoutedEventArgs e)
{
asdasd.IsEnabled = false; // asdasd - это нижняя кнопка :)
}
Если не комментить строку то будет так:
А если закомментить, то так:
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пришлось разбираться в чужом javascript кодеНаткнулся на такого типа конструкцию Имеет вид