C# 一分为二

C# 一分为二,c#,wpf,xaml,stackpanel,C#,Wpf,Xaml,Stackpanel,我试图将一个按钮一分为二,这样我可以在每一半中显示文本数据——当应用程序扩展时,文本数据的大小也可以增加 这是我得到的密码 <Button Margin="16,0,16,6" Background="#daf0fc" BorderThickness="0" Height="Auto" HorizontalAlignment="Stretch" BorderBrush="White" Click="edit_house" Padding="0" Focusable="False">

我试图将一个按钮一分为二,这样我可以在每一半中显示文本数据——当应用程序扩展时,文本数据的大小也可以增加

这是我得到的密码

<Button Margin="16,0,16,6" Background="#daf0fc" BorderThickness="0" Height="Auto" HorizontalAlignment="Stretch" BorderBrush="White" Click="edit_house" Padding="0" Focusable="False">           

<Grid>

<Grid.RowDefinitions>
    <RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
    <ColumnDefinition />
    <ColumnDefinition />
</Grid.ColumnDefinitions>


                    <StackPanel Grid.Column="0" Orientation="Vertical" VerticalAlignment="Top" HorizontalAlignment="Left" Background="Black">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Margin="0,0,5,0" Text="{Binding house_number}" FontWeight="Bold" FontSize="14" />
                            <TextBlock Margin="0,0,0,0" Text="{Binding street}" FontWeight="Bold" FontSize="14" />
                        </StackPanel>
                        <TextBlock Text="{Binding postcode}" />
                        <TextBlock Margin="0,6,0,0" Text="{Binding house_type_text}" />
                    </StackPanel>

                    <StackPanel Grid.Column="1" Orientation="Vertical" VerticalAlignment="Top">
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Top"  HorizontalAlignment="Left" Margin="0,2,0,0">
                            <TextBlock Text="£" HorizontalAlignment="Right" Foreground="#FF9D1818" FontWeight="ExtraBold" FontSize="16" />
                            <TextBlock Text="{Binding house_price}" HorizontalAlignment="Right" Foreground="#FF9D1818" FontWeight="ExtraBold" FontSize="16" />
                        </StackPanel>
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Margin="0,0,0,0">
                            <TextBlock Margin="0,0,0,0" Text="{Binding sold_text}" HorizontalAlignment="Right" Foreground="#FF107910" FontWeight="ExtraBold" FontSize="14" />
                        </StackPanel>
                    </StackPanel>

我尝试将每个
StackPanel
的一半设置为拉伸,但它们都只是浮动在按钮的中心,因此我无法对齐任何一半上的文本

这是我试图创建的按钮的图形表示

更新:

下面是我从上面的代码中得到的信息,不幸的是,我正在努力使文本对齐,或者使任何东西都延伸到每一半的全宽:


StackPanel不会这样做;它只是堆叠元素


相反,使用带有两列的

StackPanel不会这样做;它只是堆叠元素


相反,请使用带有两列的

StackPanel不是用于此操作的合适容器。尝试使用如下网格:

<Button>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="0">
            ...
        </StackPanel>
        <StackPanel Grid.Colunn="1">
            ...
        </StackPanel>
    </Grid>
</Button>

...
...

StackPanel不是此容器的合适容器。尝试使用如下网格:

<Button>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="0">
            ...
        </StackPanel>
        <StackPanel Grid.Colunn="1">
            ...
        </StackPanel>
    </Grid>
</Button>

...
...

我喜欢使用UniformGrids,不过如果需要单独定义行/列,网格也可以使用

下面是一个正确对齐的示例:

    <UniformGrid Columns="2">

        <StackPanel Background="LightBlue" >
            <StackPanel Orientation="Horizontal">
                <TextBlock Margin="0,0,5,0" Text="123" FontWeight="Bold" FontSize="14" />
                <TextBlock Margin="0,0,0,0" Text="Main Street" FontWeight="Bold" FontSize="14" />
            </StackPanel>
            <TextBlock Text="12345" />
            <TextBlock Margin="0,6,0,0" Text="Type" />
        </StackPanel>

        <StackPanel Background="Yellow">
            <StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="0,2,0,0" HorizontalAlignment="Right">
                <TextBlock Text="£" HorizontalAlignment="Right" Foreground="#FF9D1818" FontWeight="ExtraBold" FontSize="16" />
                <TextBlock Text="100.00" HorizontalAlignment="Right" Foreground="#FF9D1818" FontWeight="ExtraBold" FontSize="16" />
            </StackPanel>
            <TextBlock Margin="0,0,0,0" Text="200.00" HorizontalAlignment="Right" Foreground="#FF107910" FontWeight="ExtraBold" FontSize="14" />
        </StackPanel>

    </UniformGrid>


您可能还对签出感兴趣,它可以让您快速直观地查看每个WPF的不同布局以及它们的行为。

我喜欢使用UniformGrids,不过如果您需要单独定义行/列,网格也可以使用

下面是一个正确对齐的示例:

    <UniformGrid Columns="2">

        <StackPanel Background="LightBlue" >
            <StackPanel Orientation="Horizontal">
                <TextBlock Margin="0,0,5,0" Text="123" FontWeight="Bold" FontSize="14" />
                <TextBlock Margin="0,0,0,0" Text="Main Street" FontWeight="Bold" FontSize="14" />
            </StackPanel>
            <TextBlock Text="12345" />
            <TextBlock Margin="0,6,0,0" Text="Type" />
        </StackPanel>

        <StackPanel Background="Yellow">
            <StackPanel Orientation="Horizontal" VerticalAlignment="Top" Margin="0,2,0,0" HorizontalAlignment="Right">
                <TextBlock Text="£" HorizontalAlignment="Right" Foreground="#FF9D1818" FontWeight="ExtraBold" FontSize="16" />
                <TextBlock Text="100.00" HorizontalAlignment="Right" Foreground="#FF9D1818" FontWeight="ExtraBold" FontSize="16" />
            </StackPanel>
            <TextBlock Margin="0,0,0,0" Text="200.00" HorizontalAlignment="Right" Foreground="#FF107910" FontWeight="ExtraBold" FontSize="14" />
        </StackPanel>

    </UniformGrid>


您可能还对签出感兴趣,它可以让您快速直观地查看WPF的每个不同布局以及它们的行为。

感谢您的回复,我已经发布了我所获得的代码视图。当我出于某种原因使用网格时,它不会显示任何数据。这是因为您使用的是
。将
.50
更改为
*
,或完全删除宽度属性。此外,如果只有一行,则不需要定义
Grid.rowDefinitions
。您可以指定像素宽度(0.5像素)。不要指定任何宽度或指定比例宽度(
Width=“1*”
)好的,我已删除宽度定义。如果你能看一看我添加的更新图像,并将我推到正确的方向,使文本对齐到每一半的左右两侧,那就太棒了!我已将其中一个StackPanel设置为黑色背景,以便您可以看到其边界。基本上,我可以使用堆栈面板来获取每一半的完整“拉伸”宽度,但HorizontalAlignment=“Stretch”似乎不起作用。再次感谢有可能让StackPanel在每个网格列内左对齐或右对齐吗?感谢您的回复,我已经发布了一个代码视图。当我出于某种原因使用网格时,它不会显示任何数据。这是因为您使用的是
。将
.50
更改为
*
,或完全删除宽度属性。此外,如果只有一行,则不需要定义
Grid.rowDefinitions
。您可以指定像素宽度(0.5像素)。不要指定任何宽度或指定比例宽度(
Width=“1*”
)好的,我已删除宽度定义。如果你能看一看我添加的更新图像,并将我推到正确的方向,使文本对齐到每一半的左右两侧,那就太棒了!我已将其中一个StackPanel设置为黑色背景,以便您可以看到其边界。基本上,我可以使用堆栈面板来获取每一半的完整“拉伸”宽度,但HorizontalAlignment=“Stretch”似乎不起作用。再次感谢有可能让StackPanel在每个网格列内左对齐或右对齐吗?感谢您的帮助。如果您可以检查修订以在堆栈面板中对齐我的文本。谢谢:)我不清楚你想要实现什么。你能用实际对齐的文本更新你要找的东西的图形表示吗?谢谢你的帮助。如果您可以检查修订以在堆栈面板中对齐我的文本。谢谢:)我不清楚你想要实现什么。你能用实际对齐的文本更新你要找的东西的图形表示吗?