2009-10-25 12 views
5

मैं निम्नलिखित है DataTemplate:डेटा टेम्पलेट के अंदर टेक्स्टब्लॉक में स्ट्रिंगफॉर्मेट कैसे जोड़ें?

<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

सुनिश्चित नहीं हैं कि अपने प्रश्न की जड़ है। क्या यह स्ट्रिंगफॉर्मेट भाग के बारे में है, या यह एक नया टेम्पलेट प्राप्त करने के लिए मौजूदा टेम्पलेट को विस्तारित करने के बारे में है? आपको किसी एक का जवाब प्राप्त हुआ है :-) –

उत्तर

6

एक डेटा टेम्पलेट को किसी अन्य के गुणों का वारिस करने के लिए कोई सीधी तंत्र नहीं है।

हालांकि, आप शैलियों का उपयोग करके सफलतापूर्वक कोड डुप्लिकेशन से बच सकते हैं, जिसमें विरासत क्षमताएं हैं।

मेरा मानना ​​है कि यह आप देना होगा कि तुम क्या जरूरत है:

<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

अद्भुत, इसे स्वयं पाया जाना चाहिए था। लेकिन एसओ इतनी तेजी से उत्कृष्ट उत्तर प्रदान करता है कि मैं आलसी हो गया ... – Dabblernl

संबंधित मुद्दे