我有一个标准的 TextBox ,其宽度固定为150
并TextWrapping
设置为NoWrap
,这使得控件的行为就像旧的 WinForms 版本一样——这正是我想要的。
但是,当我单击按钮时,我想有效地将 TextBox '转换'为标签。为了省去我对多个控件的困扰,我决定最好通过将样式更改为看起来像标签来完成。其中大部分工作正常,除了我希望新样式自动调整控件的宽度以确保显示所有文本而无需用鼠标拖动选择。
为了做到这一点,我设置了Width
toauto
然后MinWidth
to 150
,如下所示:
<Style x:Key="TypeConfusedTextBox" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="3"/>
<Setter Property="Height" Value="Auto" />
<Setter Property="Width" Value="Auto" />
<Setter Property="MinWidth" Value="150" />
<Setter Property="IsTabStop" Value="False"/>
</Style>
然后我在按钮单击时分配如下:
textBox1.Style = (Style)FindResource("TypeConfusedTextBox");
问题是样式更改后,控件只是保持固定宽度为150
. 如果我将相同的Width
值MinWidth
直接应用于TextBox
设计器(或在 xaml 中),那么在重新设置样式时会按预期增长,但我不希望发生的原始样式也是如此。
我在这里想念什么?