2012-06-08 26 views
3

我試圖在WPF一定的佈局,解釋最好的辦法就是向您展示:非正方形佈局

這是它看起來像現在:

enter image description here

它應該是這樣的:

enter image description here

有沒有人對如何在WPF做到這一點的想法?邊界需要與圖像完全相同。

謝謝。

+0

你的意思是圓邊,還是非全高第二列? –

+0

@ petethepagan-gerbil我更新了圖像,希望現在更清晰。我的問題是如何完成怪異的面板1 – Jesse

+0

控制是否應該流入'Panel1'的pan-handle?或者'Panel2'生活在'Panel1'上方的空間中,覆蓋該區域下的控件。 – user7116

回答

3

如果這些網格就可以捏造事實的方式99.9%有兩個Border S的有他們的寬度設置爲CornerRadius,把他們的高度頂端右面板的ActualHeight

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="3*" /> 
    <ColumnDefinition Width="2*" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="9*" /> 
    </Grid.RowDefinitions> 
    <Border Background="Red" Grid.RowSpan="2" CornerRadius="5" Margin="2"/> 
    <Border x:Name="TopRight" Background="Red" Grid.Column="1" 
      CornerRadius="5" Margin="2"/> 
    <Border Background="Yellow" Width="5" 
      Height="{Binding ActualHeight, ElementName=TopRight}" 
      HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,2,0,2"/> 
    <Border Background="Yellow" Width="5" HorizontalAlignment="Left" 
      Height="{Binding ActualHeight, ElementName=TopRight}" 
      VerticalAlignment="Top" Grid.Column="1" Margin="0,2,2,0"/> 
    <Border Background="Green" Grid.Column="1" Grid.Row="1" 
      CornerRadius="5" Margin="2"/> 
</Grid> 

在此的顏色是例如僅覆蓋的。

+0

哇,這真是太棒了!雖然內角不圓,我真的很喜歡結果,謝謝! – Jesse

+0

如果你用剪輯屬性搞亂了,你可能會刪除那個方形的角落......但是它可能需要很多亂七八糟的東西,並且用很多幾何圖形填充XAML。最後的5%佔95%的工作量等。 –

0

下面是做這件事:

<Grid> 

    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="3*" /> 
    <ColumnDefinition Width="2*" /> 
    </Grid.ColumnDefinitions> 

    <Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="9*" /> 
    </Grid.RowDefinitions> 

    <Control x:Name="Panel1" Grid.ColumnSpan="2" Grid.RowSpan="2" /> 

    <Control x:Name="Panel2" Grid.Column="1" Grid.Row="1" /> 

</Grid> 

你可以玩弄的要求(或使用固定的值)的行/列比率。

(當然,用你想要的<Control />叫什麼來代替)

+0

使用這種方法,我不能讓邊界看起來像我的例子,這對我來說是最重要的。 – Jesse