Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 移除切换按钮wpf的外边框_C#_Wpf_Xaml - Fatal编程技术网

C# 移除切换按钮wpf的外边框

C# 移除切换按钮wpf的外边框,c#,wpf,xaml,C#,Wpf,Xaml,所以我已经研究了很多问题,人们想弄乱他们按钮的边框。我正在使用一个切换按钮(WPF),它似乎有一个“内部”边框和一个“外部”边框。我可以设法将内边框改为红色,但我不知道如何更改外边框的颜色,甚至不知道如何去掉它。我已经摆脱了chrome按钮或aero主题附带的任何东西,但我仍然无法更改此边框。这是切换按钮的图片: 正如你所看到的,边界是白色的。以下是我对该样式的代码: <Style x:Key="Style1" TargetType="{x:Type ToggleButton}">

所以我已经研究了很多问题,人们想弄乱他们按钮的边框。我正在使用一个切换按钮(WPF),它似乎有一个“内部”边框和一个“外部”边框。我可以设法将内边框改为红色,但我不知道如何更改外边框的颜色,甚至不知道如何去掉它。我已经摆脱了chrome按钮或aero主题附带的任何东西,但我仍然无法更改此边框。这是切换按钮的图片:

正如你所看到的,边界是白色的。以下是我对该样式的代码:

<Style x:Key="Style1" TargetType="{x:Type ToggleButton}">
        <Setter Property="Background" Value="Black"/>
        <Setter Property="BorderBrush" Value="Red"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Padding" Value="1"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToggleButton}">
                    <Button BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"  SnapsToDevicePixels="true" Foreground="White">
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Button>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsKeyboardFocused" Value="true">
                        </Trigger>
                        <Trigger Property="IsChecked" Value="true">
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="#ADADAD"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

我是这样使用它的:

<ListBox SelectionMode="Single" Name="touchPanel"  Grid.Row="2" Grid.Column="3" Width="Auto" Height="Auto" VerticalAlignment="Top" Background="Black" BorderThickness="0">
        <RadioButton Width="60" Height="60" Name="mouseTouchSelection" IsChecked="True" Content="Mouse" Style="{DynamicResource RadioButtonStyle1}" />
        <RadioButton Width="60" Height="60" Name="panTouchSelection"  BorderThickness="0"  Content="Pan" Style="{DynamicResource RadioButtonStyle1}"  />
        <RadioButton Width="60" Height="60" Name="rotateTouchSelection" Content="Rotate" Style="{DynamicResource RadioButtonStyle1}"/>
        <RadioButton Width="60" Height="60" Name="zoomBoxTouchSelection" Content="Box Zoom" Style="{DynamicResource RadioButtonStyle1}" />
    </ListBox>

但我希望按钮的外观是:


我通过覆盖默认按钮样式实现了上述按钮,但我似乎无法使用切换按钮。我也试着覆盖单选按钮,我也遇到了同样的问题。我错过了什么?我是否可以使用按钮样式而不是切换按钮样式?我刚刚开始学习风格,所以不要太苛刻!感谢所有的意见

controltemplate中的按钮正在创建额外的边框。如果将按钮替换为边框,则可以设置togglebutton边框的样式。你使用按钮有什么原因吗?如果需要,可以使用触发器提供按钮行为。见下文:

        <Style x:Key="Style1" TargetType="{x:Type ToggleButton}">
        <Setter Property="Background" Value="Black"/>
        <Setter Property="BorderBrush" Value="Red"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Padding" Value="1"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ToggleButton}">
                    <Border Name="Border" BorderThickness="1" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"  SnapsToDevicePixels="true" >
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="ToggleButton.IsMouseOver" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="{StaticResource DarkBrush}" />
                        </Trigger>
                        <Trigger Property="IsPressed" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="{StaticResource PressedBrush}"/>
                        </Trigger>                            
                        <Trigger Property="IsChecked" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="{StaticResource CheckedBrush}" />
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="#ADADAD"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

我只使用按钮、单选按钮和切换按钮对其进行了测试,但在尝试用列表框嵌套按钮时出现了问题。所以我把代码从:

<ListBox SelectionMode="Single" Name="touchPanel"  Grid.Row="2" Grid.Column="3" Width="Auto" Height="Auto" VerticalAlignment="Top" Background="Black" BorderThickness="0">
        <RadioButton Width="60" Height="60" Name="mouseTouchSelection" IsChecked="True" Content="Mouse" Style="{DynamicResource RadioButtonStyle1}" />
        <RadioButton Width="60" Height="60" Name="panTouchSelection"  BorderThickness="0"  Content="Pan" Style="{DynamicResource RadioButtonStyle1}"  />
        <RadioButton Width="60" Height="60" Name="rotateTouchSelection" Content="Rotate" Style="{DynamicResource RadioButtonStyle1}"/>
        <RadioButton Width="60" Height="60" Name="zoomBoxTouchSelection" Content="Box Zoom" Style="{DynamicResource RadioButtonStyle1}" />
    </ListBox>

致:



我得到了我想要的视觉效果(我们会看看它们是否正常工作)。

我有Windows8,你的风格非常适合我,周围没有白色边框。我正在运行Windows7,你知道为什么会这样吗?
<StackPanel Grid.Column="3" Grid.Row="2">
        <RadioButton Width="60" Height="60" Name="mouseTouchSelection" IsChecked="True" Content="Mouse" Style="{DynamicResource RadioButtonStyle1}" />
        <RadioButton Width="60" Height="60" Name="panTouchSelection"  BorderThickness="0"  Content="Pan" Style="{DynamicResource RadioButtonStyle1}"  />
        <RadioButton Width="60" Height="60" Name="rotateTouchSelection" Content="Rotate" Style="{DynamicResource RadioButtonStyle1}"/>
        <RadioButton Width="60" Height="60" Name="zoomBoxTouchSelection" Content="Box Zoom" Style="{DynamicResource RadioButtonStyle1}" />
    </StackPanel>