Я следую инструкциям в этом посте: как создать многопользовательский элемент управления, указывающий один код за файлом в silverlight 4
Это пример из моего кода.
public class MyCommonUserControl : UserControl
{
public static DependencyProperty CustomProperty = DependencyProperty.Register(
"CustomProperty", typeof(int), typeof(MyCommonUserControl));
public int CustomProperty
{
get
{
return (int)GetValue(TypeProperty);
}
set
{
SetValue(TypeProperty, value);
Extension();
}
}
public virtual void Extension()
{
}
}
public class FirstMyCommonUserControl : MyCommonUserControl
{
public FirstMyCommonUserControl()
{
InitializeComponent();
}
public override void Extension()
{
base.Extension();
// Do something
}
}
Как вы можете видеть выше, я использую наследование.Этот код работает для меня, потому что у меня есть несколько пользовательских элементов управления, одним из которых является класс FirstMyCommonUserControl, который переопределяет виртуальный метод, и я могу добавить некоторые вещи для этого конкретного класса.Затем я делаю это:
MyCommonUserControl A;
int number;
private void button1_Click(object sender, RoutedEventArgs e)
{
switch (number)
{
case 1:
case 2:
case 3:
case 4:
A = new FirstMyCommonUserControl();
A.CustomProperty = number;
canvas1.Children.Add((FirstMyCommonUserControl)A);
break;
case 5:
case 6:
case 7:
case 8:
A = new AnotherMyCommonUserControl();
A.CustomProperty = number;
canvas1.Children.Add((AnotherMyCommonUserControl)A);
break;
}
}
Каждый конкретный класс должен сделать что-то большее в CustomProperty.Я сделал это с помощью виртуальных методов и переопределил его.Я не знаю, если это лучший способ.