c#在UWP MVVM中调用BindingExpression.UpdateSource

c#在UWP MVVM中调用BindingExpression.UpdateSource,c#,windows,xaml,mvvm,win-universal-app,C#,Windows,Xaml,Mvvm,Win Universal App,我想使我的文本框仅在单击更新按钮时更新,而不是在属性更改时更新。我已经将它们设置为UpdateSourceTrigger=Explicit,所以现在我只需要按钮来调用BindingExpression.UpdateSource <TextBox x:Name="textBox_No" HorizontalAlignment="Left" Margin="650,145,0,0" TextWrapping="Wrap" Text="{Binding SelectedItem.Hote

我想使我的文本框仅在单击更新按钮时更新,而不是在属性更改时更新。我已经将它们设置为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模式解决您的问题,根据我的经验,当您希望与视图中的代码隐藏控件(例如MainPage.cs)进行间接交互时,这是最好的方法您必须使用行为您可以附加到此控件和此控件的所有事件,创建依赖项属性等,并且可以将此行为与其他控件一起重复使用

下面是Windows8.1的一个示例,但它可以用于uwp应用程序


MVVM中存在一个常见的误解,即根本不应该使用代码隐藏。我认为将代码用于特定于视图的功能是一种好的做法,并保留应用程序逻辑的视图模型。您的ViewModel应该能够轻松地适应另一个表示相同数据/逻辑的视图,而不会出现不适用于该视图的奇数位代码。