Как изменить некоторые части CustomControl во время разработки в Silverlight? - PullRequest
0 голосов
/ 03 ноября 2011

Для целей тестирования я написал пользовательский элемент управления Silverlight в DLL, которая состоит только из таблицы, содержащей ListBox, , предварительно заполненной 2 элементами .
(К сведению: в этом проекте у меня есть только 2 файла: BaseLayout.cs и Generic.xaml.)

Затем в другом проекте я поместил этот пользовательский элемент управления в свой MainPage.xaml:

<UserControl x:Class="Test.MainPage"
             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:base="clr-namespace:Base;assembly=Base"
             mc:Ignorable="d"
             d:DesignHeight="427"
             d:DesignWidth="508">
    <base:BaseLayout x:Name="MyLayout"
                     ListBoxBg="BlanchedAlmond" />
</UserControl>

Я знаю, как изменить цвет фона ListBox с помощью TemplateBinding.
Я также знаю, как добавлять элементы в этот ListBox во время выполнения.

Но возможно ли добавлять элементы во время разработки, в XAML? Есть ли способ разрешить что-то вроде этого:

<base:BaseLayout x:Name="MyLayout"
                 ListBoxBg="BlanchedAlmond">
    <ListBoxItem Content="Item 4" />
    <ListBoxItem Content="Item 5" />
</base:BaseLayout>

Любые предложения приветствуются.

РЕДАКТИРОВАТЬ: Чтобы быть более точным, я хотел бы иметь возможность добавлять некоторые элементы в мой ListBox из двух мест:

  • из Base.DLL, в Generic.xaml,
  • из другого проекта, в MainPage.xaml.

И я бы хотел, чтобы все эти предметы остались во время выполнения.

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Если вы используете mvvm, что означает, что у вас есть видовая модель для вашего вида, содержащая это BaseLayout, вы можете создать модель времени разработки, записать в нее свои примеры данных и получить что-то в своем виде, например,

<Grid x:Name="LayoutRoot" d:DataContext="{d:DesignInstance design:DesignMainViewModel, IsDesignTimeCreatable=True}">
    <base:BaseLayout x:Name="MyLayout" ListBoxBg="BlanchedAlmond"/>

Для получения дополнительной информации см. в этом сообщении .

Кроме того, вы можете создавать данные времени разработки, используя Expression Blend.Пожалуйста, смотрите этот пост .

0 голосов
/ 04 ноября 2011

Если вы пытаетесь достичь аналогичной функциональности, как показано в вашем примере, вы можете наследовать от ListBox и расширять его.Я не пробовал, но, возможно, вы сможете использовать ListBoxItems в XAML, как вы показываете.

...