【发布时间】:2016-04-09 13:36:15
【问题描述】:
我想让我的文本框仅在单击更新按钮时更新,而不是在属性更改时更新。我已将它们设置为 UpdateSourceTrigger=Explicit 所以现在我只需要调用 BindingExpression.UpdateSource 的按钮。
<TextBox x:Name="textBox_No" HorizontalAlignment="Left" Margin="650,145,0,0" TextWrapping="Wrap" Text="{Binding SelectedItem.Hotel_No, Mode=TwoWay, UpdateSourceTrigger=Explicit}" VerticalAlignment="Top"/>
<TextBox x:Name="textBox_Name" HorizontalAlignment="Left" Margin="650,218,0,0" TextWrapping="Wrap" Text="{Binding SelectedItem.Name, Mode=TwoWay, UpdateSourceTrigger=Explicit}" VerticalAlignment="Top"/>
<TextBox x:Name="textBox_Address" HorizontalAlignment="Left" Margin="650,305,0,0" TextWrapping="Wrap" Text="{Binding SelectedItem.Address, Mode=TwoWay, UpdateSourceTrigger=Explicit}" VerticalAlignment="Top"/>
<Button x:Name="button" Content="Update" HorizontalAlignment="Left" Margin="655,388,0,0" VerticalAlignment="Top" Command="{Binding HotelHandler.UpdateCommand, Mode=TwoWay}"/>
是否有任何简单的方法可以在没有代码隐藏的情况下调用 BindingExpression.Updatesource? 我正在寻找非代码隐藏解决方案的主要原因是我在学校学习以几乎不惜一切代价避免代码隐藏。
【问题讨论】:
-
在 MVVM 中有一个常见的误解,即根本不应该使用代码隐藏。我认为将代码隐藏用于特定于视图的功能并保留应用程序逻辑的视图模型是一种很好的做法。您的 ViewModel 应该很容易适应另一个视图,该视图代表相同的数据/逻辑,而不会出现不适用于该视图的奇怪代码。
标签: c# windows xaml mvvm win-universal-app