2010-06-30 14 views
21

पर आधारित डेटा टेम्पलेट का स्वचालित रूप से उपयोग कैसे करें जब मैं ContentControl द्वारा उपयोग के लिए एकाधिक डेटा टेम्पलेट निर्दिष्ट करने का प्रयास करता हूं ताकि सही एक (प्रकार के आधार पर) का उपयोग किया जा सके, मैं सामग्री के साथ समाप्त होता हूं जो कि सामग्री है ToString() मान। जब TypeAViewModel का एक वृक्ष नोड CurrentlySelectedTreeViewModel द्वारा दिया जाता हैContentControl की वर्तमान सामग्री के डेटाटाइप

<ContentControl DataContext="{Binding MyTreeRootViewModels}" Content="{Binding /, Path=CurrentlySelectedTreeViewModel}"> 
    <ContentControl.Resources> 
    <DataTemplate DataType="x:Type vm:TypeAViewModel"> 
     <StackPanel> 
      <local:TypeAUserControl /> 
      </StackPanel> 
    </DataTemplate> 

    <DataTemplate DataType="x:Type vm:TypeBViewModel"> 
     <StackPanel> 
      <local:TypeBUserControl /> 
     </StackPanel> 
    </DataTemplate> 
    </ContentControl.Resources> 
</ContentControl> 

उपरोक्त उदाहरण मैं "MyApp.ViewModel.TypeAViewModel" देखे जाने में दिखाया गया है। मैं अपने TypeAViewModelUserControl देखने की उम्मीद करता हूं।

मैंने अपने डेटा नियंत्रणों में से एक में एक < टेक्स्टब्लॉक टेक्स्ट = "परीक्षण"/> तत्व डालने का प्रयास किया है ताकि यह देखने के लिए कि समस्या मेरे उपयोगकर्ता नियंत्रण से संबंधित है या नहीं। वही परिणाम

कोई विचार क्या मैं गलत कर रहा हूं?

(वैसे, वर्तमान में चयनित TreeViewModel एक ऐसी संपत्ति है जो वर्तमान में मेरे वृक्षदृश्य में चयनित नोड लौटाती है। ऐसा लगता है कि यह पेड़ में नोड्स का चयन करता है, नोड के लिए सही प्रकार का नाम ContentControl दिखाई देता है)।

+0

एक ही काम करने की कोशिश कर रहा है; मेरी समस्या यह थी कि मेरे पास 'ContentControl.Resources' में मेरा 'डेटा टेम्पलेट्स' नहीं था। आपका उदाहरण मेरा समाधान था! :) – mbmcavoy

उत्तर

25

x:Type सा होना चाहिए घुंघराले ब्रेसिज़ के बीच {}:

<DataTemplate DataType="{x:Type vm:TypeAViewModel}"> 
+13

दोह। धन्यवाद बबलवाप। <माईफैस पृष्ठभूमि रंग = "लाल" /> – Emmanuel

5

x:Type है एक MarkupExtension, जो {} की आवश्यकता है XAML संकलक को इंगित करने के लिए।

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