TextBox があり、そのコンテンツが大きくなるにつれて大きくなり、コンテンツが縮小するにつれて、高さと幅の両方を縮小したいと考えています。これは、TextBox の TextChanged イベントにフックすることで簡単に実現できます。これは、MVVM では避けるべきコード ビハインドを意味します。問題は、MVVM でこれをどのように行うかです。明らかにコマンド (ICommand インターフェイスを実装するクラス) を使用する必要がありますが、コマンドをイベントにフックすることはできません。
1 つのオプションは、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>