gpt4 book ai didi

wpf - MVVM + UserControl + 依赖属性

转载 作者:行者123 更新时间:2023-12-04 17:23:43 27 4
gpt4 key购买 nike

好吧,这与这个问题有些相关:WPF Printing multiple pages from a single View Model

我试图遵循那里给出的建议,但现在我被困住了。

我的应用程序使用 MainView.xaml 和适当的 MainViewViewModel.cs,我在后台使用 MVVM Light。

现在-根据帖子-似乎我必须执行以下操作:

  • 创建用户控件
  • 从用户控件中公开一些属性
  • 确保 View 模型显示这些属性

  • 这个想法很清楚,但是在尝试相互通知时我被卡住了。

    我的用户控件 (UcTest.xaml) 公开了一个依赖属性:
    public string SpecialText
    {
    get { return (string)GetValue(SpecialTextProperty); }
    set
    {
    SetValue(SpecialTextProperty, value);

    }
    }

    // Using a DependencyProperty as the backing store for SpecialText. This enables animation, styling, binding, etc...
    public static readonly DependencyProperty SpecialTextProperty =
    DependencyProperty.Register("SpecialText", typeof(string), typeof(UcTest), new PropertyMetadata(new PropertyChangedCallback(SpecialTextChangedPropertyCallback)));

    private static void SpecialTextChangedPropertyCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
    // Do something
    Debug.WriteLine("Ffgdgf");
    }

    好的,所以我现在有一个具有一些依赖属性的用户控件。然而,这些属性与我的 ViewModel 属性完全分开(那些是应该显示的)。

    所以基本上我有两种可能性:
  • 我现在如何告诉 UserControl 的 ViewModel 某些属性已更改?
  • 是否有可能忘记依赖属性并直接访问 View 模型?

  • 附加信息#1:
    我已经上传了一个(简单)我在这里尝试做的例子: Example Project .我想从我的 MainViewViewModel 更改 UserControl1 中标签的值(通过 UserControl1 的 ViewModel 中的绑定(bind)属性)。

    最佳答案

    好吧,经过数小时的谷歌搜索,似乎“正确”的方法是根本不这样做。一般的方法是将数据保留在您的 MainViewModel 中,而不是为 UserControl 使用额外的 ViewModel(我发现它有点......好吧..不太好)。主要问题是没有简单的机制将数据从依赖属性获取到 ViewModel。

    对于打印,我现在已经回到纯粹用代码来做。

    关于wpf - MVVM + UserControl + 依赖属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15176115/

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