У меня есть несколько данных DataGrid (на самом деле usercOntrol на основе DataGrid с диалоговом окном фильтрации и т. Д.) В проекте WPF, который показывает wardebleCollection , где VisualXModel neherits from xmodel x , код>, код>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, элемент>, код>, элемент>, код и т. д. /> XModel < /code> находится в отдельной библиотеке, не связанной с UI, которая включает уровень доступа к данным. Большинство свойств в xmodel являются виртуальными и переопределенными в VisualxModel , чтобы справиться с проверкой. Нельзя использовать базовый класс VisualModel , который реализует интерфейсы, а также другие общие команды, такие как CopycellCommand , editCommand , RemoveCommand .
Но есть ли я доступ к ванну (тип параметра). сорт? Корневая часть наследования по -прежнему остается параметром типа. < /P>
public class XModel
{
public int Id { get; set; }
public virtual string Name { get; set; } // Name is made editable from the UI.
}
в настоящее время:
public class VisualXModel : XModel, INotifyPropertyChanged, INotifyDataErrorInfo
{
public override string Name
{
get => base.Name;
set
{
base.Name = value;
// Validation
// ..
OnPropertyChange(nameof(Name));
}
}
// Miscellaneous commands, such as Copy-to-clipboard
// ..
// INotifyPropertyChanged, INotifyDataErrorInfo implementations.. which is quite long to duplicate
// ..
}
с некоторым рефакторингом
public class VisualModel : INotifyPropertyChanged, INotifyDataErrorInfo
{
// Miscellaneous commands, such as Copy-to-clipboard
// ..
// INotifyPropertyChanged, INotifyDataErrorInfo implementations
// ..
}
public class VisualXModel : VisualModel
{
public override string Name
{
get => How to access / get the Name property of the XModel instance?
set
{
How to access / set the Name property of the XModel instance?
// Validation
// ..
OnPropertyChange(nameof(Name));
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... in-c-sharp