c# - 具有自定义用户控件的多阶段数据绑定(bind)

标签 c# wpf mvvm data-binding binding

我有一个带有 ViewModel 的自定义控件。在此控件中,我以编程方式将控件的属性绑定(bind)到 ViewModel。

当我使用控件并绑定(bind)到属性时,值不会更新。我有这个用于绑定(bind)

在自定义控件 View 模型中

    private string _InitValue;

    public string InitValue
    {
        get { return _InitValue; }
        set { _InitValue = value; NotifyPropertyChanged();}
    }

在 customControl 中我设置了绑定(bind)

    initValueBinding = new Binding();
    initValueBinding.Source = LocalDataContext;
    initValueBinding.Path = new PropertyPath("InitValue");
    initValueBinding.Mode = BindingMode.OneWayToSource;
    initValueBinding.BindsDirectlyToSource = true;
    initValueBinding.UpdateSourceTrigger = UpdateSourceTrigger.Default;
    BindingOperations.SetBinding(this, PlusMinControl.InitValueProperty, initValueBinding);

InitValueProperty 是一个依赖属性。

    public static DependencyProperty InitValueProperty = DependencyProperty.Register(nameof(InitValue), typeof(string), typeof(PlusMinControl), new PropertyMetadata( new PropertyChangedCallback(test)) );
    private static void test(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        ;
    }
    public string InitValue
    {
        get { return ((string)(base.GetValue(PlusMinControl.InitValueProperty))); }
        set { base.SetValue(PlusMinControl.InitValueProperty, value); }
    }

用于自定义控件的实现

     <plm:PlusMinControl InitValue="{Binding InitVal}" />

在后面的代码中,我设置了数据上下文并将 InitVal 定义为普通属性。

当我调试代码时,我可以跟踪更改直到 PropertyChangedCallback,但 View 模型中的属性未更新。

谁能告诉我我做错了什么?以及我应该如何解决这个问题。

谢谢!

最佳答案

你已经反转并混合了相同的初始化:

这使得绑定(bind) property=viewmodel

<plm:PlusMinControl InitValue="{Binding InitVal}" />

还有这个

"initValueBinding = new Binding();....."

这一定够了,去掉绑定(bind)代码

<plm:PlusMinControl InitialValue ="{Binding InitValue}" />

在控件中将属性更改为 InitialValue

关于c# - 具有自定义用户控件的多阶段数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42949096/

相关文章:

wpf - 如何在 WPF 中创建斜面渐变边框

wpf - WPF 应用程序的 "Enable Application Framework"是什么意思?

.net - 如何将 'System.Windows.Input.Key' 转换为 'System.Windows.Forms.Keys' ?

c# - app.xaml.cs 与 MainViewmodel 通信的问题

javascript - MVVM 在 DHTML RIA 应用程序(无 Silverlight/WPF)中是否可能/可行?

c# - 如何在 C#.net 页面中包含的 JavaScript block 中正确嵌入 C# 代码?

c# - 如何使用数组排序 linq 结果?

c# - 当页面回发时,ASP.NET ListView-embedded Web-Control 在 ItemDataBound 事件处理程序上丢失状态和传递值

c# - 带有 C# 示例的 Google BigQuery

c# - RibbonComboBox 不更新 SelectedValue