WPF不能正常格式化按钮和文本框

Posted

技术标签:

【中文标题】WPF不能正常格式化按钮和文本框【英文标题】:WPF not formatting button and text box normally 【发布时间】:2021-12-15 19:10:43 【问题描述】:

我正在开发一个 WPF 应用程序,按照教程进行操作,我得到的结果与他的完全不同。我三重检查了我的代码,看它是否与教程人员的完全相同(确实如此),但我的按钮的格式与旁边的文本框不正确。我希望文本框占据屏幕底部的 75%,而按钮占据大约 25%。相反,按钮占 99%,文本框占 1%。教程人的文本框和按钮格式完美。我正在链接教程并在下面输入我的代码。作为参考,这家伙在使用 JetBrains Rider 时使用 Visual Studio。有谁知道可能导致问题的原因?

链接:https://youtu.be/FYB84gKCWAc?list=PL3g0PHY_11p4PD7Dt4X9KCLpOiyCsW8UD&t=262

<Window x:Class="Chatbot.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Chatbot"
    mc:Ignorable="d"
    Title="Chatbot" Height="350" Width="525">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    
    <TextBox Grid.Row="0" Name="_tb_alpha" IsReadOnly="True"/>
    
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        
        <TextBox Grid.Column="0" Name="_tb" MaxLength="50" />
        <Button Grid.Column="1" Name="_btn" Content="Send" Click="_btn_OnClick"/>
    </Grid>
</Grid>    

【问题讨论】:

"这是我的代码,它与一些随机的 youtube 视频不同" ...不是一个有效的问题。解释你想要做什么(用语言),解释正在发生的事情,以及这与你的期望有何不同。如果您喜欢嵌入问题中,可以使用小图像,如果您喜欢,请对其进行注释 感谢您的解释!我是 *** 的新手,所以我不是最擅长提问的人。编辑它,希望它现在更有意义:) 【参考方案1】:

这是您的问题的原因:

<ColumnDefinition Width="2"/>

视频使用了星号,你只是忘记了星号'*'

<ColumnDefinition Width="2*"/>

星形大小是某些 WPF 面板(例如网格)中的一个系统,用于让事物占据整个宽度的百分比。默认情况下,宽度为“1*”,因此 2* 是其两倍 -> 导致文本框大小为 75%,按钮大小为 25%(按钮列的默认宽度为 1*)。

目前,包含您的文本框的列仅设置为 2 像素。

【讨论】:

非常感谢!这解决了一切。你让我很开心!【参考方案2】:

尝试以下方法:

&lt;ColumnDefinition Width="2"/&gt; 更改为&lt;ColumnDefinition Width="2*"/&gt;

你错过了*

【讨论】:

以上是关于WPF不能正常格式化按钮和文本框的主要内容,如果未能解决你的问题,请参考以下文章

winform文本框超出

如何使用样式/模板格式化 wpf 中的小数位数?

使用格式化将富文本框的数据存储到数据库中

vb中怎么把时间格式化

如何在 wpf 中实现带有清除按钮的文本框?

格式化c#文本框只允许数字字符[重复]