2014-05-14 4 views
0

Silverlight 5는 스타일에서 데이터 바인딩을 도입했습니다. 콘텐츠 템플릿에있는 이미지 원본을 단추 스타일로 바인딩하고 싶습니다. 이미지 소스 속성을 스타일로 설정하려고하는 아래 코드를 사용하고 있습니다.Silverlight 5에서 스타일로 바인딩하기

ImageSource 내가 생성 한 종속성 속성입니다 // 스타일

<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> 

. 이미지 원본 속성을 바인딩하지 않고 일부 이미지 URL에 정적으로 유지하면 문제가 없지만 바인딩이 작동하지 않습니다. 위의 방법으로 내가 잘못 생각한 부분을 알려주십시오.

+0

이 속성은 어디에 정의되어 있습니까? 그것은 DataContext에 존재합니까? – Martin

답변

0

당신은

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

이것은 작동하지 않습니다. –

+0

는 바인딩시 디버그 지점을 넣고 ImageSource를 확인하십시오. ImageSource에 의심의 여지가 있습니다. –

0

음과 같은 바인딩을 사용해야합니다,이를 넣어하는 방법을 ... 당신은 무엇을하려고하는 것은 하지 스타일에 바인딩 새로운 실버 라이트 5 기능 이다. 이러한 종류의 바인딩은 이전 Silverlight 버전에서도 항상 가능합니다. 당신은 DataTemplate을 가지고 있습니다. 이는 사용자가 선언 한 바인딩이 실제 UI 요소가 템플릿에서 인스턴스화 될 때 평가된다는 것을 의미합니다. 귀하의 바인딩 Source="{Binding ImageSource}"은 귀하의 버튼 DataContext에 대해 평가됩니다. 공개 속성이없는 경우 ImageSource 그러면 버튼에 이미지가 표시되지 않습니다.

관련 문제