(UWP) 当您 x:Bind 向 VM 中的事件处理程序发送事件时,是否必须在导航到新视图时手动取消绑定?
(UWP) When you x:Bind an event to a eventhandler in VM, does the bind have to be unset manually when navigating to new View?
众所周知,基于 UWP 的应用程序可以使用 x:Bind 将事件绑定到它们相应的处理程序 - 无论它们位于何处。
现在我有几个导航到的视图。这些视图中的每一个都包含 x:Bind 到位于 ViewModel 中的单个事件处理程序的事件。 ViewModel 在应用程序的生命周期内永远不会卸载。
当我导航到不同的视图时,x:Bind 链接会自动清除,还是我必须自己实现代码才能执行此操作?请记住,即使视图发生变化,我在这里使用的是相同的 ViewModel 实例。
请注意,我正在开发 UWP 应用程序,因此给出的任何建议都必须适用于该平台。我这么说是因为人们仍然倾向于提供与 WPF 相关的建议,即使我明确声明该应用程序是基于 UWP 的。
谢谢! :]
如果视图被卸载,绑定也会被卸载。如果视图仍然存在,那么绑定也是如此。 XAML 的不同之处在于,如果视图不可见,那么您并没有真正消耗太多资源来让绑定继续进行。唯一可能给您带来显着影响的是绑定期间项目上的动画;即使 View 不可见,它仍然会消耗资源(尽管更少)。
简短的回答是否定的,只要视图被卸载。就使用相同的 ViewModel 而言,这没有任何问题,事实上我更愿意在可能的时候自己做。但是正如建议一样,好的做法仍然是将 ViewModel 设计为无论是新的还是相同的都一样工作;如果有需要保持不变的数据,我建议 ViewModel 将其推给 Model。
希望这对您有所帮助:)
众所周知,基于 UWP 的应用程序可以使用 x:Bind 将事件绑定到它们相应的处理程序 - 无论它们位于何处。
现在我有几个导航到的视图。这些视图中的每一个都包含 x:Bind 到位于 ViewModel 中的单个事件处理程序的事件。 ViewModel 在应用程序的生命周期内永远不会卸载。
当我导航到不同的视图时,x:Bind 链接会自动清除,还是我必须自己实现代码才能执行此操作?请记住,即使视图发生变化,我在这里使用的是相同的 ViewModel 实例。
请注意,我正在开发 UWP 应用程序,因此给出的任何建议都必须适用于该平台。我这么说是因为人们仍然倾向于提供与 WPF 相关的建议,即使我明确声明该应用程序是基于 UWP 的。
谢谢! :]
如果视图被卸载,绑定也会被卸载。如果视图仍然存在,那么绑定也是如此。 XAML 的不同之处在于,如果视图不可见,那么您并没有真正消耗太多资源来让绑定继续进行。唯一可能给您带来显着影响的是绑定期间项目上的动画;即使 View 不可见,它仍然会消耗资源(尽管更少)。
简短的回答是否定的,只要视图被卸载。就使用相同的 ViewModel 而言,这没有任何问题,事实上我更愿意在可能的时候自己做。但是正如建议一样,好的做法仍然是将 ViewModel 设计为无论是新的还是相同的都一样工作;如果有需要保持不变的数据,我建议 ViewModel 将其推给 Model。
希望这对您有所帮助:)