RefreshProperties.All 后 PropertyGrid 失去焦点

PropertyGrid loose focus after RefreshProperties.All

我正在使用 WPF Xceed.Wpf.Toolkit.PropertyGrid 来显示我的对象的属性以供用户编辑。

我的class属性如下图:

private double height;

[Browsable(true)]
[RefreshProperties(RefreshProperties.All)] 
public double Height
{
    get
    {
        return height;
    }

    set
    {            
        bodymass = height * 10;//Some other property
        _height= value;
    }
}

对于每次按键,都会调用 set() 并且网格行由于 RefreshProperties.All 而失去焦点。因此,无法连续向网格行键入值。

是否可以将注意力集中在我输入的 属性 上?

或者至少,是否有一种方法可以指示仅当用户单击输入/松开焦点时才调用 set()?

删除 RefreshProperties 属性,实现 INotifyPropertyChanged 接口并为要在 setter 中刷新的所有属性引发 PropertyChanged 事件Height 属性:

public class MyObject : INotifyPropertyChanged
{
    private double height;

    [Browsable(true)]
    public double Height
    {
        get
        {
            return height;
        }

        set
        {
            height = value;
            Test = height.ToString(); //this refreshes Test
        }
    }

    private string _test;
    public string Test
    {
        get { return _test; }
        set { _test = value; NotifyPropertyChanged(); }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

<xctk:PropertyGrid x:Name="_propertyGrid" Width="450" Margin="10" AutoGenerateProperties="False">
    <xctk:PropertyGrid.PropertyDefinitions>
        <xctk:PropertyDefinition TargetProperties="Height" />
        <xctk:PropertyDefinition TargetProperties="Test" />
    </xctk:PropertyGrid.PropertyDefinitions>
</xctk:PropertyGrid>