C#WPF不渲染所有矩形

时间:2014-04-05 16:47:02

标签: c# wpf

所以基本上我有4个带有圆角的红色矩形,应该在我运行应用程序时出现。所有4的代码几乎相同。 问题只出现在前2位。然后第二个被剪掉了。

没有错误,没有编译或运行时异常只是不显示。

这是我的WPF代码

<Window x:Class="flashing_colors.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="1200" Width="1800">
    <Grid>
        <Rectangle Width="200" Height="700" RadiusX="25" RadiusY="25" Name="rect1" Margin="-400,184,800,185"></Rectangle>
        <Rectangle Width="200" Height="700" RadiusX="25" RadiusY="25" Name="rect2" Margin="600,184,990,185"></Rectangle>
        <Rectangle Width="200" Height="700" RadiusX="25" RadiusY="25" Name="rect3" Margin="1000,184,800,185"></Rectangle>
        <Rectangle Width="200" Height="700" RadiusX="25" RadiusY="25" Name="rect4" Margin="1400,184,800,185"></Rectangle>
    </Grid>
</Window>

这是我的C#代码。

   public partial class MainWindow : Window
   {
       public MainWindow()
       {
           InitializeComponent();
           rect1.Fill = new SolidColorBrush(Color.FromRgb(225, 75, 75));
           rect2.Fill = new SolidColorBrush(Color.FromRgb(225, 75, 75));
           rect3.Fill = new SolidColorBrush(Color.FromRgb(225, 75, 75));
           rect4.Fill = new SolidColorBrush(Color.FromRgb(225, 75, 75));
       }
   }

以下是其显示内容的屏幕截图。请注意只有2个圆角矩形。 2 out of 4 rectangles showing up

1 个答案:

答案 0 :(得分:2)

由于您将Margin Left设置为1000而Right设置为800,所有窗口宽度都设置为1800,因此没有空间显示它,对于第三个矩形更改800到500,依此类推第三个矩形。我建议使用水平方向的StackPanel,而不是使用Margin。

   <StackPanel Orientation="Horizontal">
    <StackPanel.Resources>
        <Style TargetType="Rectangle">
            <Setter Property="Width" Value="200"/>
            <Setter Property="Height" Value="700"/>
            <Setter Property="RadiusX" Value="25"/>
            <Setter Property="RadiusY" Value="25"/>
            <Setter Property="Margin" Value="30,0,0,0"/>
            <Setter Property="Fill" Value="CadetBlue"/>
        </Style>
    </StackPanel.Resources>
    <Rectangle Name="rect1"/>
    <Rectangle Name="rect2"/>
    <Rectangle Name="rect3"/>
    <Rectangle Name="rect4"/>
   </StackPanel>