Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用圆角器更改颜色按钮_C#_Wpf_Xaml - Fatal编程技术网

C# 用圆角器更改颜色按钮

C# 用圆角器更改颜色按钮,c#,wpf,xaml,C#,Wpf,Xaml,我发现这个代码: XAML: 是否可以使用WTF代码更改背景颜色? 我点击按钮,背景颜色改变 用普通按钮 我可以使用以下代码: bdr_main.Background=新的SolidColorBrush(Colors.Red); 或 bdr_main.Background=画笔.红色; 但他不工作 您能帮我吗?每次操作跟进时,编辑更改为切换按钮 只需在触发器中添加一个setter <ToggleButton Content="Click Me!" Margin="209

我发现这个代码: XAML:


是否可以使用WTF代码更改背景颜色? 我点击按钮,背景颜色改变

用普通按钮 我可以使用以下代码: bdr_main.Background=新的SolidColorBrush(Colors.Red); 或 bdr_main.Background=画笔.红色; 但他不工作
您能帮我吗?

每次操作跟进时,编辑更改为切换按钮

只需在触发器中添加一个setter

        <ToggleButton Content="Click Me!" Margin="209,135,263.4,140.8" Background="{x:Null}" BorderBrush="{x:Null}" Click="Button_Click_1">
            <ToggleButton.Template>
                <ControlTemplate TargetType="{x:Type ToggleButton}">
                    <Border x:Name="bdr_main" CornerRadius="3" Margin="0" BorderThickness="1" BorderBrush="Black" Background="LightGray">
                        <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="bdr_main" Property="Background" Value="LightGreen"/>
                        </Trigger>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter TargetName="bdr_main" Property="Background" Value="Red"/>

                            //Add line below
                            <Setter Property="Background" Value="Red" />

                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </ToggleButton.Template>
        </ToggleButton>

您可以使用ToggleButton,它是IsChecked属性

<ToggleButton Content="Click Me!" Margin="209,135,263.4,140.8">
    <ToggleButton.Template>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
            <Border x:Name="bdr_main" CornerRadius="3" Margin="0" 
                    Background="LightGray" BorderThickness="1" BorderBrush="Black">
                <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter TargetName="bdr_main" Property="Background" Value="LightGreen"/>
                </Trigger>
                <Trigger Property="IsChecked" Value="True">
                    <Setter TargetName="bdr_main" Property="Background" Value="Red"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </ToggleButton.Template>
</ToggleButton>
将XAML剥离到骨骼

<ToggleButton Click="Button_Click" Content="Click Me!"
              Background="LightGray" Margin="209,135,263.4,140.8">
    <ToggleButton.Template>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
            <Border x:Name="bdr_main" CornerRadius="3" Margin="0" BorderThickness="1" BorderBrush="Black" 
                    Background="{TemplateBinding Background}">
                <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
            </Border>
        </ControlTemplate>
    </ToggleButton.Template>
</ToggleButton>

MouseOver事件最好在ControlTemplate中处理,以获得与我第一篇文章中相同的行为,您可以将其更改为

<ControlTemplate TargetType="{x:Type ToggleButton}">
    <Border x:Name="bdr_main" CornerRadius="3" Margin="0" BorderThickness="1" BorderBrush="Black" 
            Background="{TemplateBinding Background}">
        <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
    </Border>
    <ControlTemplate.Triggers>
        <MultiTrigger>
            <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="IsChecked" Value="False" />
            </MultiTrigger.Conditions>
            <MultiTrigger.Setters>
                <Setter TargetName="bdr_main" Property="Background" Value="LightGreen" />
            </MultiTrigger.Setters>
        </MultiTrigger>
    </ControlTemplate.Triggers>
</ControlTemplate>


将边框更改为使用TemplateBinding而不是Background=“LightGray”很抱歉,您的代码工作得太多了。您是否有与WPF代码相同的解决方案?您的Xaml看起来像WPF???不,是的,但有一些类似的例子:bdr_main.Background=新的SolidColorBrush(Colors.Red);我会有一个更好的masteryThx为您提供帮助,但它是一样的,我用wpf代码搜索了一个解决方案,例如:按钮名与.Background=new SolidColorBrush(Colors.Blue);但是WPF不可识别的名称bdr_Main您能描述一下它是如何工作的吗?当你按下按钮时,它不会变红吗?释放鼠标后,颜色将变回浅灰色。您是否希望在释放按钮后保持红色?这是一样的,因为当我单击按钮时,红色会出现,但在浅灰色重新返回代码后,也有可能我希望在单击按钮时保持红色我在同一按钮或其他按钮上搜索可能的更改颜色代码。也许使用WPF代码更容易?你的代码:按钮点击1(发送者,e){((按钮)发送者).Background=Colors.Red;使用普通按钮但没有使用按钮代码。您有其他解决方案吗?我恢复了状态嗨,您使用xamp的代码工作。您使用WPF的代码没有工作可能我不明白。您能解释一下您的WPF代码吗?对不起,您的代码工作了很多次。您有相同的解决方案吗WPF代码?您好,正是我想要的,谢谢您的帮助。
prop="{TemplateBinding Background}
<ToggleButton Click="Button_Click" Content="Click Me!"
              Background="LightGray" Margin="209,135,263.4,140.8">
    <ToggleButton.Template>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
            <Border x:Name="bdr_main" CornerRadius="3" Margin="0" BorderThickness="1" BorderBrush="Black" 
                    Background="{TemplateBinding Background}">
                <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
            </Border>
        </ControlTemplate>
    </ToggleButton.Template>
</ToggleButton>
using System.Windows.Controls.Primitives;
public void Button_Click(object sender, EventArgs e)
{
    var butt = sender as ToggleButton;
    if ((bool)butt.IsChecked)
        butt.Background = Brushes.Red;
    else
        butt.Background = Brushes.LightGray;
}
<ControlTemplate TargetType="{x:Type ToggleButton}">
    <Border x:Name="bdr_main" CornerRadius="3" Margin="0" BorderThickness="1" BorderBrush="Black" 
            Background="{TemplateBinding Background}">
        <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,6,8,6" ContentSource="Content" />
    </Border>
    <ControlTemplate.Triggers>
        <MultiTrigger>
            <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="True" />
                <Condition Property="IsChecked" Value="False" />
            </MultiTrigger.Conditions>
            <MultiTrigger.Setters>
                <Setter TargetName="bdr_main" Property="Background" Value="LightGreen" />
            </MultiTrigger.Setters>
        </MultiTrigger>
    </ControlTemplate.Triggers>
</ControlTemplate>