2009-10-25 3 views
5

나는 DataTemplate을 다음 있습니다 :DataTemplate의 Textblock에 StringFormat을 추가하는 방법은 무엇입니까?

<DataTemplate x:Key="ColoringLabels"> 
    <TextBlock Padding="0" 
       Margin="0" 
       Name="Username" 
       Text="{Binding Username}" 
       Foreground="Gray" 
       FontStyle="Italic" 
       /> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding IsLoggedIn}" Value="True"> 
      <Setter TargetName="Username" Property="FontSize" Value="14"/> 
      <Setter TargetName="Username" Property="Foreground" Value="Green"/> 
      <Setter TargetName="Username" Property="FontStyle" Value="Normal"/> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 

내가 모든 사용자 이름이 뒤에있는 ListView에서 템플릿을 사용하고 싶습니다; 및 공간.

<DataTemplate x:Key="ColoringLabels"> 
    <TextBlock Padding="0" 
       Margin="0" 
       Name="Username" 
       Text="{Binding Username, StringFormat='{}{0}; '}" 
       Foreground="Gray" 
       FontStyle="Italic" 
       /> 
    <DataTemplate.Triggers> 
     ... 
    </DataTemplate.Triggers> 
</DataTemplate> 

가 어떻게 두 번째의 결과를 얻기 위해 원본 템플릿을 확장 할 수 있습니다 : 그것은 다음과 같이 기록 된대로

효과적으로 템플릿은 행동 것인가?

+0

질문의 핵심이 무엇인지 확실하지. 그것은 StringFormat 부분에 관한 것입니까, 아니면 기존 템플릿을 확장하여 새로운 템플릿을 얻는 것입니까? 당신은 어느 하나에 대한 답변을 받았습니다 :-) –

답변

6

하나의 DataTemplate이 다른 하나의 속성을 상속받는 직접 메커니즘이 없습니다.

그러나 상속 기능이있는 스타일을 사용하면 코드 중복을 피할 수 있습니다.

나는 이것이 당신이 필요로하는 무엇을 줄 것이라고 믿는다

<Style x:Key="StandardBoundTb" TargetType="TextBlock"> 
     <Setter Property="Padding" Value="0" /> 
     <Setter Property="Margin" Value="0" /> 
     <Setter Property="Text" Value="{Binding Path=Username}" /> 
     <!-- etc --> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=IsLoggedIn}" Value="True"> 
       <Setter Property="FontSize" Value="14" /> 
       <!-- etc --> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
    <Style x:Key="DelimitedBoundTb" TargetType="TextBlock" 
      BasedOn="{StaticResource StandardBoundTb}" 
    > 
     <Setter Property="Text" Value="{Binding Path=Username, StringFormat='{}{0}; '}" /> 
    </Style> 

    <DataTemplate x:Key="ColoringLabels"> 
     <TextBlock Style="{StaticResource StandardBoundTb}" /> 
    </DataTemplate> 
    <DataTemplate x:Key="ColoringLabelsDelimited"> 
     <TextBlock Style="{StaticResource DelimitedBoundTb}" /> 
    </DataTemplate> 
+0

Wonderful, 직접 발견 했어야합니다. 하지만 그렇게 빨리 나에게 게으른되는 훌륭한 답변을 제공합니다 ... – Dabblernl

관련 문제