arm*_*ali 0 .net c# wpf xaml mvvm
我有一个TextBox,随着它的内容增长,我希望它增长,随着它的内容缩小,我希望它在高度和宽度方面都缩小.这可以通过挂钩到TextBox中的TextChanged事件来轻松实现,这意味着代码隐藏,这是我们在MVVM中应该避免的.所以问题是我们如何在MVVM中做到这一点?我们必须明显使用命令(实现ICommand接口的类),同时我们不能将命令挂钩到事件.
一种选择是使用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>
Run Code Online (Sandbox Code Playgroud)
这是我的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>
Run Code Online (Sandbox Code Playgroud)
文本框收缩/增长为文本更改:
<TextBox HorizontalAlignment="Left" Width="Auto" MinWidth="10"/>
Run Code Online (Sandbox Code Playgroud)
System.Windows.Interactivity.然后再次:
| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |