C# PropertyGrid刷新属性后焦点不清晰。全部
我正在使用WPF Xceed.WPF.Toolkit.PropertyGrid显示对象的属性,供用户编辑 我的类属性如下所示:C# PropertyGrid刷新属性后焦点不清晰。全部,c#,wpf,propertygrid,xceed,C#,Wpf,Propertygrid,Xceed,我正在使用WPF Xceed.WPF.Toolkit.PropertyGrid显示对象的属性,供用户编辑 我的类属性如下所示: private double height; [Browsable(true)] [RefreshProperties(RefreshProperties.All)] public double Height { get { return height; } set {
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而失去焦点。因此,不可能连续向网格行键入值
有可能把注意力集中在我输入的同一个属性上吗
或者,至少有一种方法可以指示仅当用户单击enter/loose focus时调用集合?摆脱RefreshProperties属性,实现INotifyPropertyChanged接口,并在Height属性的setter中为所有要刷新的属性引发PropertyChanged事件:
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));
}
}
非常感谢。但在这种情况下,我必须为所有其他属性创建这么多支持变量。是否正确?否,您可以通过调用NotifyPropertyChanged方法并向其传递要更新的属性的名称来刷新任何自动实现的属性,例如NotifyPropertyChangedTheNameOfPropertyToUpdate;您还应该能够通过向NotifyPropertyChanged方法传递空字符串或null来刷新所有数据绑定属性。
<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>