gpt4 book ai didi

wpf - 是否有一种 MVVM 友好的方式来使用 WPF 中的 WebBrowser 控件?

转载 作者:行者123 更新时间:2023-12-03 23:09:18 26 4
gpt4 key购买 nike

感谢 this question (click me!) , 我有 Source我的 WebBrowser 的属性(property)正确绑定(bind)到我的 ViewModel。

现在我想实现另外两个目标:

  • 获取 IsEnabled我的后退和前进按钮的属性以正确绑定(bind)到 CanGoBackCanGoForward WebBrowser 的属性.
  • 弄清楚如何调用GoForward()GoBack()方法,无需借助代码隐藏,也无需 ViewModel 了解 WebBrowser .

  • 我目前有以下(非工作)XAML 标记:
    <WebBrowser
    x:Name="_instructionsWebBrowser"
    x:FieldModifier="private"
    clwm:WebBrowserUtility.AttachedSource="{Binding InstructionsSource}" />

    <Button
    Style="{StaticResource Button_Style}"
    Grid.Column="2"
    IsEnabled="{Binding ElementName=_instructionsWebBrowser, Path=CanGoBack}"
    Command="{Binding GoBackCommand}"
    Content="&lt; Back" />

    <Button
    Style="{StaticResource Button_Style}"
    Grid.Column="4"
    IsEnabled="{Binding ElementName=_instructionsWebBrowser, Path=CanGoForward}"
    Command="{Binding GoForwardCommand}"
    Content="Forward &gt;" />

    我很确定问题是 CanGoBackCanGoForward不是依赖属性(并且不实现 INotifyChanged ),但我不太确定如何解决这个问题。

    问题:
  • 有什么方法可以连接附加属性(就像我对 Source 所做的那样)或类似的东西来获得 CanGoBackCanGoForward绑定(bind)工作?
  • 怎么写GoBackCommandGoForwardCommand所以它们独立于代码隐藏和 ViewModel 并且可以在标记中声明?
  • 最佳答案

    对于遇到这个问题并想要一个完整解决方案的任何人,这里就是。它结合了此线程中提出的所有建议和链接线程(以及其他链接到的线程)。

    XAML:
    http://pastebin.com/aED9pvW8

    C#类:
    http://pastebin.com/n6cW9ZBB

    XAML 用法示例:
    http://pastebin.com/JpuNrFq8

    注意:该示例假定您的 View 绑定(bind)到向浏览器提供源 URL 的 ViewModel。提供了一个非常基本的导航栏,带有后退、前进和刷新按钮以及地址栏,仅用于演示。

    享受。我已将这些 pastebin 的过期时间设置为从不,因此只要 pastebin 存在,它们就应该可用。

    关于wpf - 是否有一种 MVVM 友好的方式来使用 WPF 中的 WebBrowser 控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1384177/

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