2016-03-07 6 views
5

Template10 पर एक प्रोजेक्ट को अपनाने, मैं App.xaml में विरासत में शैलियों में क्रैश हो रहा हूं।App.xaml पर आधारित ऑन स्टाइल जोड़ना ऐप() {InitializeComponent() पर क्रैश हो रहा है; }

ऐसा लगता है कि टेम्पलेट 10, विरासत या विस्तारित शैलियों का समर्थन नहीं करता है। मैं TitleStyle से SubTitleStyle विस्तार करने के लिए कोशिश कर रहा था, लेकिन मैं XamlTypeInfo.g.cs में GetXamlType पर एक COM अपवाद मिल

मेरे App.xaml.cs

sealed partial class App : BootStrapper 
{ 
    public App() { InitializeComponent(); } 

    public override async Task OnStartAsync(StartKind startKind, IActivatedEventArgs args) 
    { 
     NavigationService.Navigate(typeof(ShellView)) 
     await Task.CompletedTask; 
    } 
} 

मेरे अनुप्रयोग। XAML

<Style x:Key="TitleStyle" TargetType="TextBlock"> 
    <Setter Property="Foreground" Value="{StaticResource TextTitleForeground}"/> 
    <Setter Property="FontSize" Value="26"/> 
    <Setter Property="TextWrapping" Value="Wrap"/> 
    <Setter Property="FontWeight" Value="Medium"/> 
</Style> 
<Style x:Key="SubTitleStyle" TargetType="TextBlock" BasedOn="{StaticResource TitleStyle}"> 
    <Setter Property="Foreground" Value="{StaticResource TextForeground}"/> 
    <Setter Property="FontSize" Value="20"/> 
</Style> 

अपवाद जानकारी:

Error HRESULT E_FAIL has been returned from a call to a COM component. 

at System.Runtime.InteropServices.WindowsRuntime.IIterator`1.MoveNext() 
at System.Runtime.InteropServices.WindowsRuntime.IteratorToEnumeratorAdapter`1.MoveNext() 
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() 
at Template10.Common.BootStrapper.<InitializeFrameAsync>d__77.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at Template10.Common.BootStrapper.<InternalLaunchAsync>d__53.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state) 
at System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore() 
+2

कृपया अपना वास्तविक स्रोत कोड रखने के लिए अपना प्रश्न संपादित करें। अपने कोड की तस्वीरों से लिंक न करें। आपकी समस्या के लिए, जब आप अपना कोड चलाते हैं तो आपको और अधिक स्पष्ट होना चाहिए। क्या आपको कोई त्रुटि संदेश मिल रहा है? वे क्या कहते हैं? – Kenster

+0

मैं अधिक जानकारी के साथ अपने प्रश्न को अद्यतन करता हूं। अधिक जानकारी के लिए कोई सुझाव स्वागत है :)। धन्यवाद! – soydachi

उत्तर

2

यह मेरे लिए गहराई से उलझन में था। मैं आसानी से इसे पुन: उत्पन्न करने में सक्षम था।

// title 
foreach (var resource in Application.Current.Resources 
    .Where(x => x.Key.Equals(typeof(Controls.CustomTitleBar)))) 
{ 
    var control = new Controls.CustomTitleBar(); 
    control.Style = resource.Value as Style; 
} 

आप इस के लिए यह आसान बनाने सकता है::

var a = Application.Current.Resources.ToArray(); 

में रखा जाता है और, फिर, मैं आसानी से खाका से 10 के लिए एक संदर्भ के बिना इस पुन: पेश करने में सक्षम था अपमानजनक कोड T10 में इस ब्लॉक है किसी भी ऐप के आवेदन के OnLaunched। बूम। त्रुटि तब आती है जब हम संसाधन संग्रह तक पहुंचने का प्रयास कर रहे हैं, लेकिन केवल BasedOn शैली संसाधनों में जोड़ा गया है।

टेम्पलेट 10 के साथ प्लेटफार्म टीम के साथ बैठकर टेम्पलेट 10 की कोशिश करने और पुष्टि करने के बाद, टेबल के चारों ओर हर कोई अपने सिर खरोंच शुरू कर दिया। और, जब मैंने @ डचिबॉक्स को महसूस किया, तो आपने एक्सएएमएल मंच में एक वास्तविक बग खोज ली है।

यहाँ केवल वर्तमान तरीके को जब तक हम खाका अद्यतन है 10.

<Page.Resources> 
    <ResourceDictionary Source="..\Styles\Custom.xaml" /> 
</Page.Resources> 

मैं क्या मतलब है, तो आप पेज के बजाय App में काम करते हैं। तो, एक्सएएमएल मंच को ठीक किए बिना टेम्पलेट 10 को कैसे ठीक किया जाएगा? इस wonky कोड हम Bootstrapper में उपयोग किया जाएगा पर एक नज़र डालें:

int count = Application.Current.Resources.Count; 
foreach (var resource in Application.Current.Resources) 
{ 
    var k = resource.Key; 
    if (k == typeof(Controls.CustomTitleBar)) 
    { 
     var s = resource.Value as Style; 
     var t = new Controls.CustomTitleBar(); 
     t.Style = s; 
    } 
    count--; 
    if (count == 0) break; 
} 

त्रुटि, कम से कम, इटरेटर के गिनती संपत्ति जो घटती के बजाय बढ़ाने के लिए के रूप में आप के माध्यम से यह पुनरावृति लगता है। पागल हुह? बाहर निकलता है, यह पुनरावृत्ति पथ एक सामान्य उपयोग मामला नहीं है। लेकिन, इससे कोई फर्क नहीं पड़ता, हमने यहां आपके प्रश्न के लिए झंडा उठाया है।

मैं इस सप्ताह कुछ समय के साथ टेम्पलेट 10 अपडेट कर दूंगा।

बेस्ट किस्मत, जैरी

+0

वाह! मुझे एक्सएएमएल मंच में योगदान करने में खुशी हो रही है। अगर आपको कुछ और विवरण चाहिए, तो मुझसे पूछने में संकोच न करें। – soydachi

+0

वाह, मैंने बस एक ही बग मारा। जब तक मेरी शैलियों 'आधारित नहीं' कुछ और नहीं होती, तब तक मुझे जाना अच्छा लगता है। – akshay2000

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