2015-12-05 7 views
5

मैं अपना यूडब्लूपी ऐप बनाने की कोशिश कर रहा हूं और वर्तमान में डेटा टेम्पलेट का उपयोग करने की कोशिश करते समय डिज़ाइन अपवादों के साथ फंस गया हूं: एक संसाधन शब्दकोश में बाइंड करें।एक्स: बाइंड डिज़ाइन टाइम समस्याएं

मैंने एक संबंधित कोड-पीछे (x: बाइंड प्रारंभिक सुनिश्चित करने के लिए) के साथ एक संसाधन शब्दकोश "ItemTemplates.xaml" बनाया है। फ़ाइल सिर्फ एक टेम्पलेट शामिल हैं:

<DataTemplate x:Key="HomeViewCategoryListItemTemplate" x:DataType="models:Category"> 
    <Button Background="#88333333" Height="110" VerticalContentAlignment="Top" Padding="10" HorizontalAlignment="Stretch"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="Auto" /> 
      </Grid.RowDefinitions> 
      <TextBlock FontWeight="Light" HorizontalAlignment="Center" Text="{x:Bind Name}" FontSize="{ThemeResource TextStyleExtraLargeFontSize}" /> 
      <TextBlock Foreground="{ThemeResource ToolTipForegroundThemeBrush}" HorizontalAlignment="Center" Margin="0,10,0,0" Text="{x:Bind Description}" Grid.Row="1" TextAlignment="Center" TextWrapping="Wrap" /> 
     </Grid> 
    </Button> 
</DataTemplate> 

तब मैं इस संसाधन शब्दकोश इस तरह App.xaml को जोड़ा गया:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="ms-appx:///Resources/Core.xaml" /> 
      <resources:ItemTemplates /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

अब परियोजना क्योंकि डिजाइनर अजीब अपवाद फेंकता है, व्यर्थ है, लेकिन जब मैं साफ और प्रोजेक्ट को पुनर्निर्माण करें और HomeView.xaml पेज पर नेविगेट करें, डिज़ाइनर केवल डिफ़ॉल्ट "ToString()" आइटम दिखाता है (मूल रूप से सूची दृश्य में सूची दृश्य में केवल "तीन बार" मॉडल "श्रेणियां" होती हैं और आइटम टेम्पलेट मेरी ListView की संपत्ति को रेखांकित किया गया है और निम्न त्रुटि दिखाता है:

The resource "HomeViewCategoryListItemTemplate" could not be resolved. 

जब मैं App.xaml पर वापस नेविगेट, मैं (<resources:ItemTemplates /> पंक्ति का) वहाँ अभी तक एक और रेखांकन देखने के जो कहते हैं:

The property 'DataType' was not found in type 'DataTemplate'. 

दोनों त्रुटियों, गैर sensical हैं, क्योंकि जब मैं वास्तव में चलाने ऐप, कोई समस्या नहीं है और सब कुछ पूरी तरह से काम करता है। केवल वैकल्पिक हल मैं अब तक पाया है दोनों बढ़िया तरीका और "संकलित" रास्ते में ResourceDictionary दो बार शामिल करने के लिए है:

<ResourceDictionary Source="ItemTemplates.xaml" /> 
<resoures:ItemTemplates /> 

यह समाधान काम करता है और फिर सब कुछ दोनों डिजाइन समय में और रन-टाइम में काम करता है , लेकिन मुझे सच में लगता है कि यह काफी गन्दा है और एक बेहतर, सुरक्षित दृष्टिकोण होना चाहिए या मुझे कुछ मामूली याद आ रही है।

मैं विजुअल स्टूडियो 2015 अपडेट 1 चला रहा हूं और नवीनतम यूडब्ल्यूपी एसडीके स्थापित किया गया है। परियोजना लक्ष्य का निर्माण 10240.

संपादित करें: एक और अपवाद है कि डिजाइनर बहुत बार फेंकता है और पूरी तरह से दुर्घटनाओं:

Unable to cast object of type 'System.String' to type 'Models.Data.Categories.Category'. 

StackTrace उत्पादन इस ItemTemplates.xaml.cs कोड के अंदर होता है के अनुसार - विशेष रूप से उत्पन्न विधि ProcessBindings। फिर, परियोजना अभी भी संकलित और सामान्य रूप से चलती है, लेकिन डिजाइनर आउटपुट दिखाने की कोशिश भी परेशान नहीं करता है।

+1

आपके आइटम टेम्पलेट्स क्लास कोड कैसा दिखता है? शायद यह गाइड मदद करता है? http://igrali.com/2015/06/14/how-to-use-compiled-bindings-xbind-from-a-resource-dictionary/ – sibbl

+3

मैं आपका दर्द सुनता हूं। मेरे पास यूडब्ल्यूपी ऐप्स के साथ बहुत सारे और बहुत सारे डिजाइनर मुद्दे हैं, भले ही सब कुछ ठीक चल रहा है ... –

+0

sibbl: मेरा आइटम टेम्पलेट्स काम नहीं करते हैं, भले ही उनके पास बस इतना आसान हो ' 'सामग्री। मैंने जांच की और मैंने आपके द्वारा लिंक की गई मार्गदर्शिका में दिए गए चरणों का पालन किया और इससे मदद नहीं मिली ... –

उत्तर

0

इस मौजूदा संस्करण के लिए, अधिक बाइंडिंग पसंद करते हैं एक्स: बाइंड

an answer from a Microsoft engineers

मैं एक ही समस्या है तुमने किया था के रूप में, प्लस जब एक्स का उपयोग कर कीड़े की एक टन मिल गया है: डिजाइन समय में बाइंड। ठीक करने का सबसे तेज़ तरीका: पुराने समय के रूप में बाइंडिंग का उपयोग करें। और जब आप रिलीज करते हैं, तो प्रदर्शन पर विचार किया जा रहा है, बाध्यकारी को x में बदलें: बाइंड

+0

-1 आप 'बाध्यकारी' को प्राथमिकता देने के लिए कह रहे हैं जैसे कि यह आपके लिंक और इस प्रकार माइक्रोसॉफ्ट द्वारा समर्थित था। लेकिन यह नहीं है। आपके लिंक में माइक्रोसॉफ्ट के किसी व्यक्ति ने विजुअल स्टूडियो के डिज़ाइन टाइम मोड में समस्याओं के कारण _Design टाइम डेटा_ की वजह से 'बाध्यकारी' का उपयोग करने का निर्णय लिया है। तो यह वास्तव में सवाल का जवाब नहीं देता है। –

+0

अभी भी कुछ गुण हैं जो x: Bind के साथ काम नहीं कर सकते –

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