Предоставить свойство в Windows Phone 7 custom ControlTemplate

#c# #xaml #windows-phone-7

#c# #xaml #windows-phone-7

Вопрос:

Я использую Visual Studio 2010 и Expression Blend 4, целью является платформа Windows Phone 7.

Что я хотел бы создать, так это пользовательский элемент управления (в частности, пользовательскую кнопку для Map, но это может быть что угодно) и предоставить некоторые из его свойств, чтобы я мог их изменить. Я попытаюсь лучше объяснить на примере:

 <ControlTemplate x:Key="PushpinControlTemplate1" TargetType="Microsoft_Phone_Controls_Maps:Pushpin">
    <Border BorderBrush="#FF0012AD" BorderThickness="3" Background="#FF0012AD" Width="32" Height="32" CornerRadius="5">
        <TextBlock Text="2" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="32" Margin="0,-4,0,0"/>
    </Border>
</ControlTemplate>
  

Этот пример взят из примера MSDN.
Теперь, когда я «использую» этот шаблон на карте, он отображается как ожидалось, но с одной проблемой. Я хотел бы, чтобы свойство Text текстового блока (в данном случае … например, это может быть ImageSource, если я помещаю изображение в PushPin) могло быть изменено на панели свойств Expression Blend и в коде C # «за» XAML — конечно, для каждого «экземпляра» этого PushPin отдельно.

Насколько я знаю, это должно что-то делать со свойствами зависимостей (я могу ошибаться?), Но мне еще предстоит найти четкий пример, показывающий, ЧТО именно, ГДЕ (C # / XAML) и ПОЧЕМУ (извините, я должен был подчеркнуть) должно было быть сделано.
Я разобрался с большинством «тем» Phone 7, но теперь я немного застрял в отношении ресурсов и привязок данных, как показано здесь 🙂

Если кто-нибудь может предоставить какой-нибудь пример кода или ссылку на хороший учебник, я был бы признателен. Спасибо!

Ответ №1:

Если вы хотите просто задать свойство пользовательского элемента управления с помощью кода, вы можете использовать обычное свойство. Однако, если вы хотите привязаться к свойству, вы должны использовать свойство зависимости.

Вот хороший пример

Комментарии:

1. Да, это именно то, что я хотел сделать 🙂 В этом примере «раскрытие» свойства InfoText через свойство dependency. Спасибо!