Пользовательский элемент управления Silverlight в MainPage.xaml - PullRequest
1 голос
/ 20 октября 2010

В настоящее время я изучаю возможность создания пользовательского элемента управления в проекте Silverlight в Expression Blend 4. Элемент управления имеет связанный набор примеров данных для пользовательского элемента управления, и данные правильно отображаются в пользовательском элементе управления.

Когда я размещаю пользовательский элемент управления на главной странице, образцы данных не отображаются в пользовательском элементе управления. Это правильное поведение, или я что-то настраиваю / не настраиваю? Что я нахожу странным, так это то, что при редактировании пользовательского элемента управления данные появляются на главной странице рядом с индикатором перестроения (желтый восклицательный знак). Когда я перестраиваюсь, данные снова исчезают.

Это код главной страницы:

<UserControl
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:SilverlightApplication2" mc:Ignorable="d"
x:Class="SilverlightApplication2.MainPage"
Width="1200" Height="640">
<UserControl.Resources>
    <local:MultiDayViewModel x:Key="MultiDayViewModelDataSource" d:IsDataSource="True"/>
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White" d:DataContext="{d:DesignData /SampleData/TestSampleData.xaml}">
    <Grid.RowDefinitions>
        <RowDefinition Height="0.128*"/>
        <RowDefinition Height="0.872*"/>
    </Grid.RowDefinitions>
    <StackPanel Margin="0,24,8,8" HorizontalAlignment="Right" Width="318" Orientation="Horizontal">
        <Button Content="Daily"/>
        <Button Content="Weekly"/>
    </StackPanel>
    <local:MultiDayView x:Name="MultiDayView" Margin="8" Grid.Row="1" DataContext="{Binding Calenar, Source={StaticResource MultiDayViewModelDataSource}}"/>
</Grid>

Будем благодарны за любые мысли или указания.

Спасибо.

1 Ответ

2 голосов
/ 20 октября 2010

Вы используете d: DataContext, который появляется только в режиме разработки. Когда вы помещаете элемент управления в MainPage, он интерпретируется Blend как находящийся в режиме выполнения, поэтому данные не отображаются, поэтому это ожидаемое поведение.

Когда вы создаете пример данных для элемента управления в Blend, вы можете указать, хотите ли вы, чтобы эти образцы данных также использовались во время выполнения, или вы можете просто установить свойство DataContext вместо или в дополнение к свойству d: DataContext .

На следующем рисунке показано, как включить образцы данных во время выполнения при создании примера источника данных из Blend:

Enable sample data when application is running

Когда вы выбираете опцию «Включить образцы данных во время работы приложения», ваш XAML выглядит следующим образом:

    <UserControl
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="ASD_Answer002.MainPage"
        Width="640" Height="480">
        <UserControl.Resources>
            <DataTemplate x:Key="DataTemplate1">
                <CheckBox Content="{Binding Property1}" IsChecked="{Binding Property2, Mode=TwoWay}"/>
            </DataTemplate>
        </UserControl.Resources>

        <Grid x:Name="LayoutRoot" Background="White" DataContext="{Binding Source={StaticResource SampleDataSource}}">
            <ItemsControl ItemsSource="{Binding Collection}" ItemTemplate="{StaticResource DataTemplate1}" Margin="50"/>
        </Grid>
    </UserControl>

Это покажет ваши примерные данные для времени проектирования и выполнения.

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