2011-01-06 12 views
8

में संपत्ति पर डब्ल्यूपीएफ विंडो के बाध्यकारी के साथ समस्या बाध्यकारी में मुझे WPF विंडो की शीर्षक संपत्ति पर शैल व्यू मॉडल क्लास में बाध्यकारी संपत्ति के साथ सरल समस्या है- यह खोल है।शेल व्यू मॉडल क्लास [Caliburn.Micro]

इस तरह मेरे खोल दृश्य नज़र:

<Window x:Class="Spirit.Views.ShellView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="{Binding Path=Title}" > 
    <Grid> 
     <ContentControl x:Name="ActiveItem" /> 
    </Grid> 
</Window> 

खोल दृश्य मॉडल वर्ग:

[Export(typeof(IShellViewModel))] 
    public class ShellViewModel : Conductor<IScreen>.Collection.OneActive, IShellViewModel 
    { 
     private string _title; 

     public string Title 
     { 
      get { return _title; } 
      set 
      { 
       _title = value; 
       NotifyOfPropertyChange(()=>Title); 
      } 
     } 

     public ShellViewModel() 
     { 
      Title = "Spirit"; 
     } 
    } 

अगर मैं खोल दृश्य (WPF विंडो) की एप्लिकेशन शीर्षक Namespace.ShellViewModelClass, का कोई मूल्य नहीं है चलाने खोल दृश्य मॉडल वर्ग में संपत्ति शीर्षक।

यदि मैं खोल दृश्य में कुछ स्क्रीन सक्रिय करता हूं, तो खिड़की की शीर्षक संपत्ति नामस्थान है। ViewModelClass।

मैं इस व्यवहार को कैसे हटा सकता हूं? सलाह के लिए धन्यवाद।

उत्तर

20

iScreen के बाद से IHaveDisplayName साथ परिभाषित किया गया है और मुख्यमंत्री ढांचे के स्क्रीन वर्ग DisplayName की संपत्ति है, तो आप सिर्फ अपने ShellViewModel में है कि संपत्ति निर्धारित करने की आवश्यकता, इस तरह:

public ShellViewModel() 
{ 
    base.DisplayName = "Spirit"; 
} 
+0

यह मुझे 'कन्स्ट्रक्टर में वर्चुअल सदस्य कॉल' की आर # चेतावनी देता है। हालांकि इसके आसपास एक अच्छा तरीका नहीं है। कक्षा को सील नहीं कर सकते हैं। –

0

आपके द्वारा दिए गए कोड से बताना थोड़ा मुश्किल है, लेकिन मुझे लगता है कि आप अपने कोड के पीछे ShellViewModel के उदाहरण में अपनी विंडो का डेटाकॉन्टेक्स्ट असाइन करते हैं। ShellViewModel कब शुरू किया गया है?

आपको किसी भी गुण के लिए अपने व्यूमोडेल में INotifyPropertyChanged लागू करने की आवश्यकता है, जिसके लिए आप एक परिवर्तित मूल्य देखना चाहते हैं। यहां लिंक एमएसडीएन दस्तावेज के लिए है, लेकिन यदि आप इसके लिए Google और/या SO खोजते हैं, तो आपको बहुत सारे उदाहरण दिखाई देंगे।

+0

मैं INotifyPropertyChanged इंटरफ़ेस को लागू नहीं करना चाहिए, क्योंकि मैं कैलिबर्न का उपयोग करें। माइक्रो फ्रेमवर्क और मेरी शैल मॉडल क्लास स्क्रीन क्लास से ली गई है और यह इस इंटरफ़ेस को कार्यान्वित करती है। –

+0

क्षमा करें - मैंने आपके मूल सकारात्मक पर अपना उत्तर आधारित किया है, जिसे अभी डिफ़ॉल्ट रूप से प्राप्त किया गया था; सेट; संपत्ति। क्या आप अपने प्रश्न को उस कोड के साथ भी अपडेट कर सकते हैं जो ViewModel को प्रारंभ करता है और इसे आपके डेटा कॉन्टेक्स्ट के रूप में सेट करता है? –

+0

हाय, कैलिब्रर्न में आप डेटाकॉन्टेक्स्ट में प्रवेश नहीं करते हैं। उदाहरण के लिए मॉडल में वोनको नाम की संपत्ति स्वचालित रूप से नियंत्रण में विंको नाम पर नियंत्रण से बंधी हुई है। –