WPF组件样式

时间:2016-10-25 16:33:27

标签: c# wpf xaml

我刚刚开始学习WPF并且有这个项目要做。

我是在App Resources(app.xaml)上写的,不知道这是否是设置组件设计的正确方法,但我认为这是实用的。

但是当我启动该程序时,发生了thats the program running

我是否有解决方法,或者我必须在屏幕上的XAML上声明样式?

非常感谢! 如果有任何类型错误,请注意英语

<Application.Resources>
    <Style TargetType="TextBox">
        <Setter Property="Width" Value="210" />
        <Setter Property="Height" Value="30" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="FontFamily" Value="Arial" />
        <Setter Property="FontSize" Value="15" />
        <Setter Property="TextWrapping" Value="NoWrap" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style TargetType="PasswordBox">
        <Setter Property="Width" Value="210" />
        <Setter Property="Height" Value="30" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="FontFamily" Value="Arial" />
        <Setter Property="FontSize" Value="15" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style TargetType="TextBlock">
        <Setter Property="FontFamily" Value="Arial" />
        <Setter Property="FontSize" Value="15" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style TargetType="Button">
        <Setter Property="Width" Value="100" />
        <Setter Property="Height" Value="30" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="FontFamily" Value="Arial" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style TargetType="DataGrid">
        <Setter Property="Width" Value="600" />
        <Setter Property="Height" Value="400" />
        <Setter Property="FontFamily" Value="Arial" />
        <Setter Property="FontSize" Value="15" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style TargetType="Border">
        <Setter Property="BorderBrush" Value="Black" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="VerticalAlignment" Value="Top" />
    </Style>

    <Style TargetType="Image">
        <Setter Property="IsHitTestVisible" Value="True" />
    </Style>
</Application.Resources>

1 个答案:

答案 0 :(得分:0)

看着你的截图,Chris W用他的评论称呼它,建议你先看看你网页的整体布局。不幸的是,我无法看到你所拥有的页面本身的高度和宽度,但看起来默认值比屏幕要小得多。

所以,首先 - 让我们在查看任何样式之前解决页面的整体布局。我将使用一个网格和一些StackPanels(我正在直接输入这个答案,但希望我会接近。考虑这个免责声明大声笑)

<Grid Style="{StaticResource LoginLayout}" x:Name="LayoutRoot">
   <Grid.RowDefinitions>
      <RowDefinition />
      <RowDefinition />
      <RowDefinition />
   </Grid.RowDefinitions>
   <StackPanel Grid.Row="0" Orientation="Vertical">
      <TextBlock Text="Login"/>
      <TextBox x:Name="txtLogin"/>
    </StackPanel>
    <StackPanel Grid.Row="1" Orientation="Vertical">
      <TextBlock Text="Senha"/>
      <PasswordBox x:Name="txtPassw"/>
    </StackPanel>
    <StackPanel Grid.Row="2" Orientation="Horizontal">
       <Button x:Name="btnLogin" />
       <Button x:Name="btnExit" />
    </StackPanel>
  </Grid>

Grid容器和StackPanels处理元素的布局和定位,并将有助于启动更灵敏的布局(不完美,但现在可以直接编码)。

至于风格,你可能注意到Grid有一种风格 - 这是我的习惯,我更喜欢它,特别是当我处理更大的项目时。所以,让我们来看看风格......

<Style x:Key="LoginLayout" TargetType="{x:Type Grid}">
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
    <Setter Property="Width" Value="110"/>
</Style>
<Style TargetType="{x:Type StackPanel}">
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>
    <Setter Property="VerticalContentAlignment" Value="Top"/>
</Style>

您已为其他项目定义的样式应该有效,但可能需要稍微调整一下 - 这里以按钮为例:

<Style TargetType="{x:Type Button}">
    <Setter Property="Width" Value="100"/>
    <Setter Property="Height" Value="30"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="FontFamily" Value="Arial"/>
    <Setter Property="Margin" Value="3"/>
</Style>

我知道这不是一个完美的风格,但是这些项目的大多数定位都是由网格和堆栈面板处理的。您可以通过其他几种方式打开此页面 - 但希望这可以让您开始朝着正确的方向前进。

祝你好运!