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在每个网格列内左对齐或右对齐吗?感谢您的帮助。如果您可以检查修订以在堆栈面板中对齐我的文本。谢谢:)我不清楚你想要实现什么。你能用实际对齐的文本更新你要找的东西的图形表示吗?谢谢你的帮助。如果您可以检查修订以在堆栈面板中对齐我的文本。谢谢:)我不清楚你想要实现什么。你能用实际对齐的文本更新你要找的东西的图形表示吗?