Можно ли связать один и тот же код за несколькими классами в Silverlight, как во Flash - PullRequest
0 голосов
/ 27 апреля 2011

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

В Silverlight это так?Можно ли как-нибудь, в том числе путем взлома vs студийного проекта вручную xml-файла?

1 Ответ

1 голос
/ 27 апреля 2011

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

Определить обработчик событий в базовом классе - 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 - определяет новый элемент управления, унаследованный от BaseControl.Вам просто нужно указать базовый класс

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>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...