【问题标题】:c# Calling BindingExpression.UpdateSource in UWP MVVMc# 在 UWP MVVM 中调用 BindingExpression.UpdateSource
【发布时间】: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


【解决方案1】:

有一些方法可以使用 MVVM 模式解决您的问题,根据我的经验,当您希望使用视图中的代码(例如 MainPage.cs)间接与控件交互时,您必须使用 行为您可以附加到控件和该控件的所有事件,创建依赖属性等,您可以将此行为与其他控件重用。

这是一个适用于 Windows 8.1 的示例,但它可以用于 uwp 应用程序

http://julmar.com/blog/programming/behaviors-in-windows-8-1-store-apps/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2021-04-21
    • 2017-10-25
    • 2017-05-14
    相关资源
    最近更新 更多