在两个地方使用更改事件上的绑定值?

时间:2019-11-12 14:25:44

标签: data-binding blazor webassembly

我有类似这样的东西,我在绑定父组件的子组件中的值。

<div class="col">
    <Child @bind-InputValue="@parentInputValue"/>
</div>

我需要知道子项何时更改了InputValue,以便可以在父项中调用方法,因为还有其他组件需要根据parentInputValue中的值进行更新。

我尝试绑定InputValueChanged,但这引发了一个错误,因为它说它在两个或多个位置使用。我猜@ bind-InputValue已经设置好了。

我的问题是-我能以某种方式在父组件中捕获该事件吗?该子组件中大约有12种不同的输入,当该子组件更改父InputValue对象中的任何内容时,我想以某种方式捕获事件。

我还尝试过在名为OnChange的子级中设置一些参数,如果发生任何更改,我将调用该参数,但是我使用的是这些奇怪的下拉菜单,因此很难实现该功能。

1 个答案:

答案 0 :(得分:2)

好吧,当我需要这样做时,我使用了INotifyPropertyChanged实现:

    public class Model: INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private string _value;
        public string Value 
        {
            get { return _value; }
            set
            {
                _value = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Value)));
            }
        }
    }

<div class="col">
    <Child @bind-InputValue="@model.Value"/>
</div>
@code {
   private Model model = new Model();
   protected override void OnInitialized()
   {
        model.PropertyChanged += (s, e) => 
        {
             Console.WriteLine($"Model {e.PropertyName} has changed.");
        };
   }
}