как создать несколько пользовательских элементов управления, указывающих один код за файлом в silverlight 4

Я создаю приложение, в котором у меня есть 2 пользовательских элемента управления, возможно ли, что у нас есть 2 страницы управления пользователями xaml и 1 код за файлом xaml.cs?


person Viral Sarvaiya    schedule 29.06.2011    source источник


Ответы (1)


Начните с создания трех файлов, сначала файл «code-behind» .cs создается как простой класс:

 public class MyCommonUserControl : UserControl
 {

 }

Обратите внимание, что у него нет вызова InitializeComponent.

Теперь создайте новый UserControl, затем измените его xaml, чтобы он выглядел следующим образом:

<local:MyCommonUserControl x:Class="YourApp.FirstMyCommonUserControl "
    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:YourApp"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">

    </Grid>

</local:MyCommonUserControl >

Обратите внимание на добавление псевдонима xmlns:local, указывающего на пространство имен вашего приложения, а затем на изменение тега UserControl на базовый элемент управления, который нам действительно нужен.

Вы должны изменить .xaml.cs на это: -

public partial class FirstMyCommonUserControl : MyCommonUserControl 
{
    public FirstMyCommonUserControl()
    {
        InitializeComponent();
    }
}

Это все, что должен содержать файл .xaml.cs.

Затем вы можете повторить это для SecondMyCommonUserControl и так далее. Поместите весь общий код в базовый класс MyCommonUserControl.

Жаль, что MS не предвидела этого с самого начала, добавив пустой виртуальный метод InitializeComponent к базовому UserControl и имея автоматически сгенерированный код .gics override, метод означал бы, что мы можем обойтись без этого лишнего .xaml. cs файл в этих случаях.

person AnthonyWJones    schedule 29.06.2011