我有一个 TextBox,随着它的内容增长,我希望它增长,随着它的内容缩小,我希望它的高度和宽度都缩小。这可以通过 Hook 到 TextBox 中的 TextChanged 事件来轻松实现,这意味着代码隐藏,我们应该在 MVVM 中避免这种情况。所以问题是我们如何在 MVVM 中做到这一点?我们显然必须使用命令(实现 ICommand 接口(interface)的类),同时我们不能将命令 Hook 到事件。
一种选择是使用 System.Windows.Interactivity。我以前用过它,它非常简洁,但实际上有些人可能会反对它,因为它更多地使用 Silverlight 库。
还有其他选择吗?
一个更简单的 XAML。请注意,我希望窗口改变它的大小,因为 TextBox 占据了整个窗口:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid HorizontalAlignment="Stretch">
<TextBox Width="Auto">
</TextBox>
</Grid>
</Window>
这是我的 XAML:
<Window x:Class="SleekNoteUI.Views.SleekNoteView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<Window.Template>
<ControlTemplate>
<Border...>
<Grid>
<Grid Grid.Row="1" x:Name="noteGrid">
<TextBox Grid.Row="0"
Text="{Binding SomeText...}"
Background="{Binding...}">
</TextBox>
</Grid>
</Grid>
</Border>
</ControlTemplate>
</Window.Template>
</Window>
最佳答案
文本框随着文本的变化缩小/增长:
<TextBox HorizontalAlignment="Left" Width="Auto" MinWidth="10"/>
System.Windows.Interactivity
. 然后再次:
关于c# - WPF MVVM 在您键入时更改文本框大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15734800/