我有一个DataTemplate一个TextBox声明如下:如何清除MVVM中的文本框?
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,4,0,0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<cmd:EventToCommand Command="{Binding DataContext.NotesEnteredCommand,
RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}">
<cmd:EventToCommand.CommandParameter>
<MultiBinding Converter="{StaticResource SimpleMultiValueConverter}">
<Binding Path="Row.OID" />
<Binding Path="Text" RelativeSource="{RelativeSource FindAncestor, AncestorType=TextBox}" />
</MultiBinding>
</cmd:EventToCommand.CommandParameter>
</cmd:EventToCommand>
</i:EventTrigger>
</i:Interaction.Triggers>
<TextBox.InputBindings>
<KeyBinding Key="Enter" Command="{Binding DataContext.NotesEnteredCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}">
<KeyBinding.CommandParameter>
<MultiBinding Converter="{StaticResource SimpleMultiValueConverter}">
<Binding Path="Row.OID" />
<Binding Path="Text" RelativeSource="{RelativeSource FindAncestor, AncestorType=TextBox}" />
</MultiBinding>
</KeyBinding.CommandParameter>
</KeyBinding>
</TextBox.InputBindings>
什么这个文本框通常做的就是按下Enter键或失去焦点时,当执行MVVM光强RelayCommand。
我的问题是,我无法弄清MVVM在上述两种情况下通过XAML清除文本框的文本值的方法。在代码隐藏方面非常简单,但我无法在MVVM中找到它。
任何想法?
为“TextBox”的Text属性创建一个绑定到ViewModel中的属性,将属性设置为“”,并且你的“TextBox”文本将被清除? – Viv 2013-04-24 15:53:13
我无法在ViewModel中使用它,我的行被绑定到一个DataView,这会要求我为此专门设置一列。但是,谢谢你的回复:) – user2170838 2013-04-24 16:40:28
@ user2170838不要忘记你可以使用类似于'RelativeSource'绑定的东西来绑定到当前DataContext以外的东西,比如'Text =“{Binding RelativeSource = {RelativeSource AncestorType = {x :Type DataGrid}},Path = DataContext.NewNoteText}“',DataGrid的'DataContext'同时包含DataView和新的注释文本的字符串属性。当然,这只适用于文本是静态的,无论点击哪一行:) – Rachel 2013-04-24 16:44:00