2012-09-13 6 views
1

ListView를 수정 한 사용자 지정 컨트롤이 있습니다. DataTemplate은 폭 128의 아이콘과 그 밑에 레이블로 각 항목을 보여줍니다.DataTemplate에서 컨트롤의 속성 바인딩

<DataTemplate x:Key="AeroIconTemplate"> 
    <Grid VerticalAlignment="Top" Margin="0"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Image Grid.Row="0" Source="{Binding Image}" Width="128" 
       MaxHeight="128" Margin="0"/> 
     <TextBlock Grid.Row="1" Text="{Binding Title}" Foreground="Black" 
        TextWrapping="WrapWithOverflow" Margin="0" 
        TextTrimming="CharacterEllipsis" Width="128" MaxHeight="60" /> 
    </Grid> 
</DataTemplate> 

이제 IconSize라는 ListView 자체에 속성을 추가했습니다. 나는 ImageWidth, MaxHeight이 속성에 TextBlockWidth을 바인딩 할

(16) 사이에 256이 정수를합니다. 따라서 IconSize 속성이 변경 될 때마다 템플릿의 크기가 조정됩니다. 당신이 볼 수 있듯이 나는 현재 데이터 객체 (이미지 소스와 레이블 텍스트)에 바인딩하고 있지만이 경우에는 ListView 컨트롤에 바인딩하려고합니다.

어떻게하면됩니까?

감사합니다.

답변

3

당신은에 대한 RelativeSource을 사용할 수 있습니다 다음 WPF ListView이 재산 IconSize이 없기 때문에

... Width="{Binding IconSize,RelativeSource={RelativeSource AncestorType=ListView}}" ... 

는 올바른 유형을 정의해야합니다. 수업을 정의해야 할 수도 있습니다.

+0

감사합니다. 모든 구속력있는 것들은 아직도 내 두뇌에 완전히 정착하지 못했습니다. :) –

관련 문제