Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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_Forms_Border_Styling - Fatal编程技术网

C# 从代码后面看按钮边框的厚度

C# 从代码后面看按钮边框的厚度,c#,wpf,forms,border,styling,C#,Wpf,Forms,Border,Styling,我对wpf非常陌生,现在我正在使用按钮,因此我想更改按钮边框的厚度,但不是从XAML中的代码中更改,我接下来做的是: var converter = new System.Windows.Media.BrushConverter(); var brush = (Brush)converter.ConvertFromString("#83D744"); btn0.Background = System.Windows.Media.Brushes.Transparent; // This is ap

我对wpf非常陌生,现在我正在使用按钮,因此我想更改按钮边框的厚度,但不是从XAML中的代码中更改,我接下来做的是:

var converter = new System.Windows.Media.BrushConverter();
var brush = (Brush)converter.ConvertFromString("#83D744");
btn0.Background = System.Windows.Media.Brushes.Transparent; // This is applied to button
       btn0.BorderThickness = new Thickness(1); //Thickness wont apply to button I dont know why
        btn0.BorderBrush = brush; //This is also applied to button

按钮的默认边框厚度为1,因此如果将其设置为1,则不会发生任何更改

要查看更改,只需将其设置为不同的值:

button.BorderThickness = new Thickness(1, 1, 1, 3);

由于默认按钮模板没有边框属性,您可以访问的详细信息:。 因此,如果您想在按钮周围添加边框,则必须添加自己的样式,如:

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
   <Setter Property="Template">
      <Setter.Value>
         <ControlTemplate TargetType="{x:Type Button}">
            <Border x:Name="border" BorderBrush="Transparent" BorderThickness="0" Background="Transparent">
               <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
            </Border>
         </ControlTemplate>
      </Setter.Value>
   </Setter>
</Style>
并应用此样式,如:

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="Template">
       <Setter.Value>
          <ControlTemplate TargetType="{x:Type Button}">
             <Border x:Name="border" BorderBrush="{TemplateBinding Property=BorderBrush}" BorderThickness="{TemplateBinding Property=BorderThickness}" Background="{TemplateBinding Property=Background}">
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
             </Border>
          </ControlTemplate>
       </Setter.Value>
    </Setter>
</Style>
<Grid>
    <Button Name="btnNew" Style="{StaticResource ButtonStyle }" Width="200" Height="50" Click="Button_Click" />
</Grid>

按钮模板可能正在显式设置边框厚度。我认为建议的方法可能是将这些属性绑定到视图模型,然后更改绑定的关联属性,而不是直接使用命令代码。但看起来按钮的边框厚度不是1,我会说它看起来是3或smth,这就是我想将其设置为1的原因,稍后我将发布屏幕截图,您将看到我所说的:)WPF中的默认按钮有一个border属性,无需添加它()当然@91378246,button类有一个名为
border
的属性,但我谈论的是模板
ContentPresenter
是负责任何带有in按钮的内容的东西,
ContentPresenter
没有
边框
,因此要更改
边框
厚度,首先必须添加它,最简单的方法是将
ContentPresenter
包装在
边框
内,然后像我那样玩它它在上面。可以有其他方法,但这是我发现很容易的。
btnNew.Background = Brushes.Black;
btnNew.BorderThickness = new Thickness(4, 5, 7, 9);
btnNew.BorderBrush = Brushes.Red;