gpt4 book ai didi

c# - 控件应该在 ViewModel 中吗?

转载 作者:行者123 更新时间:2023-11-30 17:55:10 27 4
gpt4 key购买 nike

我正在尝试学习 MVVM 并在我的手机应用程序中使用 MVVM light,但我对如何访问某些信息有点困惑。

我尽量不使用事件背后的代码,因为这似乎不是真正的 MVVM 方式,但我遇到了一个我不知道该怎么做的问题。

我正在使用 Google 身份验证,并且在每次浏览器加载后检查 Naviagted 事件。

public ICommand BrowserNavigated
{
get
{
return new RelayCommand<NavigationEventArgs>(e =>
{
var d = e;
var a = d;
});
}
}

但是我还需要实际的对象控件(我想访问页面吐出的 html)但我不知道如何获取它。

 private void wbGoogle_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
var d = e;
var d2 = d;
}

在上面的代码中,我可以将“发件人”强制转换为 Web 浏览器对象,但是我以 MVVM 方式执行此操作,但我不知道如何访问它。

我的 ViewModel 中是否应该为 WebBrowser 添加其他属性或其他属性?

最佳答案

在 MVVM 中,代码隐藏是允许的,但绑定(bind)可能是首选。但是,不允许具有 GUI 控件/事件(硬耦合)。

可能有一些方法可以避免代码隐藏,但如果您必须处理一个事件,从事件中获取数据并在代码隐藏中设置 ViewModel 的属性,那么这是一种比将 UI 代码添加到您的 ViewModel,这显然不符合 MVVM。

也许您可以创建某种 EventTrigger,它为您可以数据绑定(bind)的网络浏览器设置一个属性,以创建一个您可以在 XAML 中设置的可重复使用的触发器? (关于如何避免代码隐藏和创建可重用代码,可能有很多聪明的方法)

关于c# - 控件应该在 ViewModel 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15284438/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com