Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 左右对齐网格元素并拉伸按钮WPF上的中心柱_C#_Wpf_Xaml - Fatal编程技术网

C# 左右对齐网格元素并拉伸按钮WPF上的中心柱

C# 左右对齐网格元素并拉伸按钮WPF上的中心柱,c#,wpf,xaml,C#,Wpf,Xaml,一个按钮上有三个文本块。希望将第0列和第2列textblock分别锚定在按钮的左边缘和右边缘,而第1列textblock占用多余的空间。如何做到这一点 <Grid Width="150" Height="50"> <Button Style="{StaticResource GrayStyleButton}"> <Grid> <Grid.ColumnDefinitions>

一个按钮上有三个文本块。希望将第0列和第2列textblock分别锚定在按钮的左边缘和右边缘,而第1列textblock占用多余的空间。如何做到这一点

<Grid Width="150" Height="50">
    <Button 
            Style="{StaticResource GrayStyleButton}">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <TextBlock 
                    Grid.Column="0"
                    FontSize="12"
                    Text="+">
            </TextBlock>
            <TextBlock 
                    Grid.Column="1"
                    FontSize="12"
                    Text="Page1_b2">
            </TextBlock>
            <TextBlock 
                    Grid.Column="2"
                    FontSize="12"
                    Text="+">
            </TextBlock>
        </Grid>
    </Button>
</Grid>



我希望您在静态样式资源中使用适当的边距值和其他缩进属性。

为按钮和网格提供HorizontalAlignment=“Stretch”

<Button HorizontalContentAlignment="Stretch">
                <Grid Width="{Binding}" HorizontalAlignment="Stretch">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <TextBlock Grid.Column="0"
                               FontSize="12"
                               Text="+" />
                    <TextBlock Grid.Column="1" 
                               FontSize="12"
                               Text="Page1_b2" />
                    <TextBlock Grid.Column="2"
                               FontSize="12"
                               Text="+" />
                </Grid>
            </Button>


或者,您可以将图像和文本块放在stackpanel内(
Orientation=“HorizontalAlignment”
),一个图像带有
HorizontalAlignment=“Left”
,文本块带有
HorizontalAlignment=“Center”
,另一个图像带有
HorizontalAlignment=“Right”
。只需将
HorizontalContentAlignment=“Stretch”
添加到
按钮
元素。现在您获得XAML的方式是,
按钮的子按钮
网格
自动调整大小以适应其内容。因此,虽然第0列和第2列保持相同的大小,第1列始终拉伸以使用
网格中的剩余空间,但
网格本身会根据文本的长度改变大小。设置
按钮。HorizontalContentAlignment
属性将告诉
按钮
始终使
网格
按钮
中尽可能大。谢谢。现在可以了。我必须删除“StaticResource GrayStyleButton”引用才能使HorizontalContentAlignment=“Stretch”正常工作。静态资源似乎正在重写stretch语句。
<Button HorizontalContentAlignment="Stretch">
                <Grid Width="{Binding}" HorizontalAlignment="Stretch">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <TextBlock Grid.Column="0"
                               FontSize="12"
                               Text="+" />
                    <TextBlock Grid.Column="1" 
                               FontSize="12"
                               Text="Page1_b2" />
                    <TextBlock Grid.Column="2"
                               FontSize="12"
                               Text="+" />
                </Grid>
            </Button>