.net - WPF change Button Content on ViewModel.PropertyChanged event -


मेरा प्रयास (नीचे) विफल रहता है:

 & lt; कैनवास x: कुंजी = "लॉक" .. / & Gt; & Lt; कैनवास x: कुंजी = "अनलॉक" ... / & gt; & Lt; शैली x: Key = "LockButtonStyle" TargetType = "{x: प्रकार बटन}" & gt; & LT; Style.Triggers & gt; & Lt; DataTrigger बाध्यकारी = "{बाध्यकारी पथ = IsReadOnly}" मान = "सत्य" & gt; & LT; DataTrigger.Setters & gt; & Lt; सेटर संपदा = "सामग्री" मान = "{स्टेटिकआरएसओआर लॉक}" / & gt; & LT; /DataTrigger.Setters> & Lt; / DataTrigger & gt; & Lt; डेटाट्रिगर बाध्यकारी = "{बाध्यकारी पथ = आइसाइड केवल}" मान = "गलत" & gt; & LT; DataTrigger.Setters & gt; & Lt; सेटर संपत्ति = "सामग्री" मान = "{स्टेटिक संसाधन अनलॉक}" / & gt; & LT; /DataTrigger.Setters> & Lt; / DataTrigger & gt; & LT; /Style.Triggers> & Lt; / शैली> ... & lt; बटन सामग्री = "{स्टेटिक रिसोर्स लॉक}" / & gt; 

मैं जब बटन को बदलने के लिए कोशिश कर रहा हूँ जब ViewModel पर IsReadOnly संपत्ति बदल जाती है (यह INotifyPropertyChanged.Property को आग करता है, "IsReadOnly" के रूप में PropertyName के साथ परिवर्तित होता है)।

.NET 3.5

उत्तर (कम से कम मेरे लिए - सामान्य मामले का समर्थन नहीं करता है):

मैंने अभी एक त्वरित लिखा है बूलियन संपत्ति बाध्यकारी के लिए कनवर्टर। रूपांतरण (टाइपफ (बूल), टाइपफ (ऑब्जेक्ट))] पब्लिक क्लास बूलियन वैल्यू कनॉन्टर: आइव्ल्यूकॉन्टर {सार्वजनिक ऑब्जेक्ट फल्सेवैल्यू {प्राप्त; सेट; } सार्वजनिक वस्तु TrueValue {get; सेट; } #region IValueConverter सदस्य सार्वजनिक वस्तु कन्वर्ट (वस्तु मूल्य, प्रकार targetType, वस्तु पैरामीटर, CultureInfo संस्कृति) {वापसी (bool) मान? यह। खरगोश: यह.फ्लसवाले; } सार्वजनिक वस्तु कन्वर्टबैक (ऑब्जेक्ट वैल्यू, प्रकार लक्ष्य प्रकार टाइप करें, ऑब्जेक्ट पैरामीटर, कल्चरइन्फो कल्चर) {return object.Equals (this.TrueValue, value)? सही गलत; } #endregion} ... स्थानीय: बूलियन वैल्यू कनवर्टर x: कुंजी = "लॉकऑर अनलॉक" TrueValue = "{StaticResource अनलॉक}" FalseValue = "{StaticResource Lock}" / & gt; ... & lt; बटन सामग्री = "{बाध्यकारी पथ = IsReadOnly, कनवर्टर = {StaticResource LockOrUnlock}}" / & gt;

यदि आप बटन की संपत्ति "सामग्री" सेट करते हैं, तो आप इसे ट्रिगर के साथ नहीं बदल सकते, क्योंकि सबसे पहले एक वरीयता लेता है।
सामग्री की सेटिंग को हटाने का प्रयास करें और उसे काम करना चाहिए, क्योंकि ट्रिगर स्वयं सही काम करेंगे।


Comments