2015-04-14 9 views
5

कैलिबर्न और डब्ल्यूपीएफ एमवीवीएम के लिए नया, इसलिए मैं कुछ सरल दिख रहा हूं और मुझे वेब पर कुछ भी नहीं मिला।कैलिबर्न के कंडक्टर <object> का उपयोग करते समय विंडो शीर्षक ओवरराइट किया गया है

Caliburn.Micro के साथ एक साधारण Wpf प्रोजेक्ट सेट अप करें। ShellView.xaml में विंडो शीर्षक सेट करें। ठीक काम करता है। मुख्य मेट्रोविंडो शीर्षक के रूप में शीर्षक प्रदर्शित करता है।

वर्क्स ठीक:

[Export(typeof (IShell))] 
public class ShellViewModel : PropertyChangedBased, IShell 
{} 

लेकिन बदलने के लिए:

[Export(typeof (IShell))] 
public class ShellViewModel : Conductor<object> 
{} 

और विंडो शीर्षक इस ViewModel की पूरी तरह से योग्य नाम है। किसी भी सहायता की सराहना की जाएगी। धन्यवाद। उदाहरण के लिए

[Export(typeof (IShell))] 
public class ShellViewModel : Conductor<IScreen> 
{ 
    public ShellViewModel() 
    { 
     DisplayName = "Your window title"; 
    } 
} 

मेरी भंडार में आप WPF में कुछ अनुप्रयोगों Caliburn.Micro का उपयोग कर प्राप्त कर सकते हैं,:

उत्तर

8

आप इस तरह उपयोग कर सकते हैं

+0

लिंक और सुझाव के लिए धन्यवाद। अब भी वही। उल्लेख किया जाना चाहिए था कि मैं Caliburn.Micro 2.02 का उपयोग कर रहा हूँ। आपके बूटस्ट्रैपर में नोटिस आप 1.5.2 का उपयोग कर रहे हैं। –

+0

क्या आप अपनी परियोजना दिखा सकते हैं? मैंने नए संस्करण के साथ एक नमूना ऐप तैयार किया और यह काम करता है। क्या आपने यह [दस्तावेज़ीकरण] देखा है (https://caliburnmicro.codeplex.com/wikipage?title=Screens,%20Conductors%20and%20 कॉम्पोजिशन)? (मुझे जाना है, मैं कल मदद करने की कोशिश करूंगा)। –

0

वोज्शिएक के लिए धन्यवाद मुझे सही दिशा में इंगित करने के लिए।

जब शैल व्यूमोडेल संपत्तिChangeBase और IShell को विरासत में ले रहा है, तो ShellView.xaml कार्यों में शीर्षक = "विंडो शीर्षक" सेट कर रहा है। लेकिन, जब Caliburn.Micro 2.0.2 का उपयोग कर और कंडक्टर (एकल स्क्रीन कंडक्टर) से इनहेरिट विंडो शीर्षक दृश्य मॉडल की पूरी तरह से योग्य नाम के साथ ओवरराइट है (मेरे मामले में):

FBAGOLDEVALUATOR.APP.VIEWMODELS.SHELLVIEWMODEL 

इस तरह लग रहा है Caliburn.Micro v2.02 में बग, जब तक कि मैं कुछ याद नहीं कर रहा हूँ।

वर्कअराउंड: व्यूमोडेल में सार्वजनिक संपत्ति में .xaml में विंडो की शीर्षक संपत्ति को बांधें। .xaml लाइन:

Title="{Binding Path=DisplayTitle, Mode=OneWay}" 

ShellViewModel.cs में संपत्ति:

private string _displayTitle; 
    public String DisplayTitle 
    { 
     get 
     { 
      return _displayTitle; 
     } 
     set 
     { 
      if (value.Equals(_displayTitle)) return; 
      _displayTitle = value; 
      NotifyOfPropertyChange(() => DisplayName); 
     } 
    } 

फिर ShellViewModel निर्माता में सेट:

DisplayTitle = "FBA Gold Evaluator"; 

काम करने के लिए लगता है कि।

+0

मैंने आपके उत्तर को सेटटर में शून्य संदर्भ अपवाद को रोकने के लिए एक छोटा फिक्स जोड़ना संपादित किया ;-)। क्या आप वाकई "DisplayName" सेटिंग काम नहीं करते हैं? क्या आपने पहले एक्सएएमएल से शीर्षक हटा दिया था? –

+0

आप सही हैं! XAML से शीर्षक को हटाने और ModelView कन्स्ट्रक्टर में DisplayName = "नया शीर्षक" सेट करना बहुत अच्छा काम करता है। मैं पूरी तरह से याद किया। मुझे लगता है कि एक्सएएमएल, डब्ल्यूपीएफ, एमवीवीएम और कैलिबर्न सीखने की कोशिश कर रहा है।एक ही समय में माइक्रो एक बुरा विचार है। क्षमा करें मैं बंदूक कूद गया। मैं जवाब के रूप में प्रवेश कैसे कर सकता हूं? धन्यवाद। –

+0

बस उत्तर के रूप में अपनी जांच की। एक बार फिर धन्यवाद। –

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

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