2014-05-14 5 views
0

Я знаю, что Silverlight 5 вводит привязку данных в стилях. Я хочу связать источник изображения, который присутствует в шаблоне контента в стиле кнопки. Я использую приведенный ниже код, где я пытаюсь установить свойство источника изображения в стиле.Связывание в стиле в Silverlight 5

// Стиль

<UserControl x:Class="MGPIControls_Simple.ButtonControl" 
    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:vsm="clr-namespace:System.Windows;assembly=System.Windows" 
    Height="40" Width="40" 
    mc:Ignorable="d" x:Name="ButtonControlSample"> 

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.Resources> 

     <Style x:Key="ImageButtonStyle" TargetType="Button"> 
      <Setter Property="BorderBrush" Value="Transparent"/> 
      <Setter Property="BorderThickness" Value="0"/> 
      <Setter Property="Background" Value="Transparent"/> 
      <Setter Property="ContentTemplate"> 
       <Setter.Value> 
        <DataTemplate> 

         <!-- binding in style --> 
         <Image Source="{Binding ImageSource}" 
           VerticalAlignment="Stretch" 
           HorizontalAlignment="Stretch" 
           Stretch="Fill"/> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 

     </Style> 
    </Grid.Resources> 
    <Button x:Name="ButtonBase" Style="{StaticResource ImageButtonStyle}" 
      HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
</Grid> 

Где ImageSource это свойство зависимостей я создал. Если я не привязываю свойство источника изображения и не ставим его на какой-то URL-адрес изображения, все работает нормально, но привязка не работает. Пожалуйста, дайте мне знать, где я ошибаюсь в вышеуказанном подходе.

+0

Где находится это свойство ImageSource? Он присутствует в DataContext? – Martin

ответ

0

Вы должны использовать связывание как

<TextBlock Text="{Binding Path=DataContext.BusyText, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" 
+0

Это не работает. –

+0

может использовать точку отладки при привязке и проверить ImageSource, у меня есть сомнения в ImageSource –

0

Ну, как бы это ... то, что вы пытаетесь сделать, это не новый Silverlight 5 функций Связывание стилей. Такая привязка всегда возможна, даже с более старыми версиями Silverlight. У вас есть DataTemplate, и это означает, что любое обязательство, которое вы объявляете, оценивается, когда фактические элементы пользовательского интерфейса создаются из шаблона. И ваша привязка Source="{Binding ImageSource}" оценивается против вашей кнопки DataContext. Если общественная собственность ImageSource, то ваша кнопка не будет показывать изображение.

Смежные вопросы