2011-07-30 60 views
2

Just fyi,我是WPF的新手。WPF布局,我可以清理它吗?

我在我的WPF应用程序中创建了一个侧栏,并且想要圆角。我学到的不是可以附加到网格的属性。另外,我尝试将文本框放在边框控件中,但是我收到的错误信息是“孩子只能设置一次”。

下面是我到目前为止的代码,但我不喜欢在一个StackPanel不必窝我的TextBlocks,嵌套在一个网格,嵌套在一个边界,嵌套在父网格。任何方式来清理呢? (如果没有,不用担心,再次,一种新的这个,只是希望得到我的XAML有组织地)

<Grid Style="{StaticResource SideBar}"> 
    <Border Style="{StaticResource RoundedSidebar}"> 
     <Grid> 
      <StackPanel Orientation="Vertical" VerticalAlignment="Top"> 
       <TextBlock /> 
       <TextBlock /> 
       <TextBlock /> 
      </StackPanel> 
     </Grid> 
    </Border> 
</Grid> 

任何反馈将不胜感激。

感谢

回答

2

如果没有比在outter Grid元素边界之外的任何元素,你可以删除对于初学者。

而且,你有你的边界,现在,与StackPanel的是边框内网格的唯一元素,你可以删除网格以及方式...

最后,你不需要Orientation属性的设置是因为Vertical是默认设置,StackPanel中堆叠TextBlocks和其他元素是完全正常的,毕竟它的目的是...

+0

非常感谢,这工作得很好......这是一个很多清洁 – kdub

1

没有太多要清理。这是我会做的:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="auto"/> 
    </Grid.ColumnDefinitions> 
    <Border Style="{StaticResource RoundedSidebar}" Grid.Column="1"> 
     <StackPanel Orientation="Vertical" VerticalAlignment="Top"> 
      <TextBlock /> 
      <TextBlock /> 
      <TextBlock /> 
     </StackPanel> 
    </Border> 
</Grid> 
+0

为什么额外的列? – kenwarner

+0

我想这个额外的列只是为了演示如何轻松地创建一个边栏。 Border中的'Grid'似乎是唯一的(微观)优化。 +1 – xlk

+0

事实上,你所拥有的外部电网并不需要,所以我把它变成了主电网。 –

相关问题