Возможно ли связать одну и ту же кодовую строку с несколькими классами в silverlight, как во flash

#silverlight #flash

#silverlight #flash

Вопрос:

Во flash можно указать на файл на диске, чтобы связать форму с классом, имя которого может отличаться от имени формы, чтобы вы могли использовать несколько форм для одного и того же класса.

В Silverlight возможно ли это каким-либо образом, в том числе путем взлома XML-файла vs studio project вручную?

Ответ №1:

Это выполняется с использованием наследования. Вы можете определить все, что вам нужно, в базовом элементе управления, а производные элементы управления используют этот код. Например, вы хотите определить обработчик событий, который будет использоваться для всех ваших элементов управления:

Определите обработчик событий в базовом классе — BaseControl.xaml.cs

 namespace SilverlightApp
{
    public partial class BaseControl : UserControl
    {
        public BaseControl()
        {
            InitializeComponent();
        }

        // The event handler that used by derived classes
        protected void Button_Click(object sender, RoutedEventArgs e)
        {
             // your implementation here
        }
    }
}
  

BaseControl.xaml

 <UserControl x:Class="SilverlightApp.BaseControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <!-- your implementation here if needed -->
</UserControl>
  

MyControl1.xaml.cs — определяет новый элемент управления, унаследованный от theBaseControl. Вам просто нужно указать базовый класс

 namespace SilverlightApp
{
    public partial class MyControl1 : BaseControl
    {
        public MyControl1()
        {
            InitializeComponent();
        }
    }
}
  

MyControl1.xaml

 <local:BaseControl x:Class="SilverlightApp.MyControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:SilverlightApp"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">
        <!-- button uses event handler from the base class -->
        <Button Content="My button" Click="Button_Click" />
    </Grid>
</local:BaseControl>
  

Надеюсь, это то, что вы имели в виду.