2013-12-23 52 views
3

我在設計Silverlight ChildWindow,並遇到了一個問題。我在窗口標題上定義了一個按鈕,如下所示:ChildWindow(Silverlight)設計問題標題上的按鈕

<ChildWindow.Title> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="This is textblock" Grid.Column="0"/> 
     <Button Content="Help" Name="btnHelp" Grid.Column="1" Width="100" 
       Margin="300,0,0,0" /> 
    </Grid> 
</ChildWindow.Title> 

此窗口可調整大小。當您嘗試調整窗口大小時,關閉按鈕將覆蓋「btnHelp」按鈕,並且「btnHelp」按鈕也不會與窗口邊緣對齊。我嘗試過使用StackPanel之前,我也在兩個變體(StackPanel和Grid)中使用了邊距,他們沒有正確地幫助我。代碼中的變體是最新的:)請給我一個提示,我該怎麼做? 在此先感謝。

回答

2

這是ChildWindow's control template中似乎是一個奇怪選擇的結果 - Title內容沒有延伸,所以如果不對其進行任何硬編碼,就無法正確對齊任何內容。所以,你可以繼續前進,只是採用固定寬度的網格列寬度:

<controls:ChildWindow.Title> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="250"/> 
      <ColumnDefinition Width="100"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="This is textblock" Grid.Column="0"/> 
     <Button Content="Help" Name="btnHelp" Grid.Column="1" /> 
    </Grid> 
</controls:ChildWindow.Title> 

這是快速和骯髒的,但不是很滿意。另一種方法是修改ControlTemplate(在上面的鏈接處),以使其表現得如您所願。發現顯示TitleContentControl,並使其伸展以填充可用空間,加入HorizontalContentAlignment="Stretch"

<Style TargetType="controls:ChildWindow" x:Key="MyChildWindowStyle"> 

    <!-- etc ... --> 

    <ContentControl Content="{TemplateBinding Title}" FontWeight="Bold" 
        HorizontalContentAlignment="Stretch" 
        HorizontalAlignment="Stretch" IsTabStop="False" Margin="6,0,6,0" VerticalAlignment="Center"/> 

    <!-- etc ... --> 
</Style> 

這樣您就可以使用正常的佈局控件像Grid,它會呈現如預期:

<controls:ChildWindow Style="{StaticResource MyChildWindowStyle}" 
    ... 
    <controls:ChildWindow.Title> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="Auto"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="This is textblock" Grid.Column="0"/> 
      <Button Content="Help" Name="btnHelp" Grid.Column="1" Width="100"/> 
     </Grid> 
    </controls:ChildWindow.Title> 

Child Window (modified control template)

+0

對我的作品如我所料。非常感謝你! –