UWP C#中控件居中的方法

3

我正在尝试将文本块居中于我的应用程序窗口。我在文本块的“Loaded”事件处理程序中尝试了以下代码:

    private void textBlock1_Loaded(object sender, RoutedEventArgs e)
    {
        Debug.WriteLine("textBlock1_Loaded");
        double textBlockWidth = textBlock1.Width;
        double textBlockHeight = textBlock1.Height;
        double gridWidth = grid1.Width;
        double gridHeight = grid1.Height;
        double leftRightMargin_center = (gridWidth - textBlockWidth) / 2;
        double topBottomMargin_center = (gridHeight - textBlockHeight) / 2;
        double topMargin_needed = topBottomMargin_center - 25;
        double bottomMargin_needed = topBottomMargin_center + 25;
        double leftMargin_needed = leftRightMargin_center;
        double rightMargin_needed = leftRightMargin_center;
        textBlock1.Margin = new Thickness(leftMargin_needed, topMargin_needed, rightMargin_needed, leftMargin_needed);
    }

下面是生成的应用程序:

生成的应用程序

这里有什么问题吗?是的,这是我在本帖中唯一的问题。


1
现在看,如果是在WPF中,我会在XAML中使用HorizontalAlignment=Center,但我就是个混蛋。通常,在任何基于XAML的用户界面中,你不需要在代码后台做任何类似Windows Forms的疯狂事情。你的XAML是什么样子的? - user1228
@Will 我希望它在我的代码后台中。 - Alsan Ali
你想用最困难的方式去做,那是...值得赞赏的吗? - user1228
@AlsanAli 为什么不设置 textBlock1.VerticalAlignment = VerticalAlignment.Center; - Vijay Nirmal
@AlsanAli 如果您想在同一位置放置两个控件,可以使用“Grid”,并将您的控件放置在“Grid”内。 - Vijay Nirmal
显示剩余9条评论
1个回答

3
使用StackPanel
<Grid>
    <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
        <TextBlock Text="Top Text" Margin="20" HorizontalAlignment="Center"/>
        <TextBlock Text="Bottom Text" Margin="20" HorizontalAlignment="Center"/>
    </StackPanel>
</Grid>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接