Как создать многопользовательский элемент управления, указывающий один код за файлом в Silverlight 4 - PullRequest
2 голосов
/ 29 июня 2011

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

1 Ответ

6 голосов
/ 29 июня 2011

Начните с создания трех файлов, сначала файл «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.

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