У меня есть два пользовательских курсора для моего приложения, MyCursor и MyOtherCursor, оба из которых были разработаны в xaml, и я добавил некоторое поведение в xaml.cs для каждого из них. Это поведение было одинаковым для обоих, поэтому я унаследовал их от базового класса, чтобы уменьшить дублирование кода.
XAML:
<UserControl x:Class="MyProject.MyCursor"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="24" Height="24">
<Ellipse Stroke="Black" StrokeThickness="5" Height="24" Width="24" Fill="White" />
</UserControl>
CS:
public partial class myCursor: CursorBase
{
public InterchangeCursor()
{
InitializeComponent();
}
}
public class CursorBase : UserControl
{
public virtual void MoveTo(Point pt)
{
this.SetValue(Canvas.LeftProperty, pt.X);
this.SetValue(Canvas.TopProperty, pt.Y);
}
}
Для базового класса xaml нет, он чисто определен в cs.
Моя проблема в том, что если я что-то изменяю в xaml для MyCursor, файл MyCursor.g.cs регенерируется, и вместо наследования от CursorBase частичный класс в g.cs наследуется от System.Windows.Controls. UserControl. Поскольку другая сторона частичного класса в файле xaml.cs по-прежнему наследует CursorBase, возникает ошибка сборки. Я нахожу это раздражающим исправление файла g.cs каждый раз. Кто-нибудь знает, как это предотвратить?