簡體   English   中英

WPF StackPanel布局問題

[英]WPF StackPanel Layout Question

我正在嘗試創建一個類似於此的布局:

替代文字http://img20.imageshack.us/img20/3533/stackn.png

這是我的代碼:

<StackPanel TextBlock.FontFamily="Segoe UI" Orientation="Horizontal">
    <StackPanel HorizontalAlignment="Stretch" Width="Auto">
        <TextBlock Padding="5,0,5,0" FontSize="12" FontWeight="Bold" Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}" />
        <TextBlock Padding="5,0,5,0" FontSize="12" Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Id}" />
    </StackPanel>
    <StackPanel>
        <TextBlock Padding="5,0,5,0" FontSize="10" Text="Delete">
            <TextBlock.Style>
                <Style TargetType="{x:Type TextBlock}">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="FontWeight" Value="Bold" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>    
        </TextBlock>
        <TextBlock Padding="5,0,5,0" FontSize="10" Text="Move">
            <TextBlock.Style>
                <Style TargetType="{x:Type TextBlock}">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="FontWeight" Value="Bold" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>    
        </TextBlock>
    </StackPanel>
</StackPanel>

為什么不為此使用網格?

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="300" />
    </Grid.ColumnDefinitions>

    <StackPanel Grid.Column="0">
        <TextBlock Text="{Binding Title}" />
    </StackPanel>

    <StackPanel Grid.Column="1">        
        <TextBlock Text="Move" />
    </StackPanel>

</Grid>

我認為你的父元素可能會更好。 省略你的風格,什么不是,這是繪圖中布局的XAML。

<Grid>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto" />
      <ColumnDefinition Width="50" />  <!-- or some other fixed width -->
   </Grid.ColumnDefinitions>

   <StackPanel Grid.Column="0">
     <!-- left hand stackpanel content -->
   </StackPanel>
   <StackPanel Grid.Column="1">
      <!-- right hand StackPanel content -->
   </StackPanel>
</Grid>

你真的不想要一個StackPanel用於你的紅色容器。 我將使用DockPanel,將最右側的藍色面板停靠在右側,並確保LastChildFill處於打開狀態,以確保最左側的藍色面板擴展到窗口寬度。

這是我從你的帖子得到的代碼:

<DockPanel TextBlock.FontFamily="Segoe UI" LastChildFill="True">
    <StackPanel DockPanel.Dock="Right">
        <TextBlock Padding="5,0,5,0" FontSize="10" Text="Delete">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="FontWeight" Value="Bold" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
        </TextBlock>
        <TextBlock Padding="5,0,5,0" FontSize="10" Text="Move">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="FontWeight" Value="Bold" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
        </TextBlock>
    </StackPanel>
    <StackPanel HorizontalAlignment="Stretch" Width="Auto">
        <TextBlock Padding="5,0,5,0" FontSize="12" FontWeight="Bold" Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Title}" />
        <TextBlock Padding="5,0,5,0" FontSize="12" Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Id}" />
    </StackPanel>
</DockPanel>

希望這可以幫助!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM