2008-11-13 17 views
11

का उपयोग नहीं कर रहा है, तो मैं शैली परिवर्तन को कैसे ट्रिगर करूं? मेरे पास कई नियंत्रण वाले पृष्ठ हैं। नियंत्रण पृष्ठ के डेटाकॉन्टेक्स्ट से प्राप्त मूल्यों को प्रदर्शित करने के लिए बाध्य होते हैं। मैं क्या करना चाहता हूं पृष्ठ के एक और रूप को प्रदर्शित करना चाहिए डेटाकॉन्टेक्स्ट शून्य होना चाहिए। कुछ मामलों में पृष्ठ की नियंत्रण अलग-अलग प्रदर्शित होनी चाहिए यदि "उनकी" संपत्ति सेट है या नहीं।यदि डेटाकॉन्टेक्स्ट शून्य है या WPF

यह देखने के लिए बाध्यकारी बनाना संभव है कि डेटाकॉन्टेक्स्ट सेट है या नहीं?

क्या मैंने किया था एक समाधान के पृष्ठ पर एक IsDataContextSet संपत्ति जोड़ने के लिए और इस तरह एक बाध्यकारी निर्दिष्ट था के रूप में:

Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Page}}, Path=IsDataContextSet}" Value="false" 

यह काम करता है के रूप में मैं उम्मीद लेकिन मुझे लगता है के लिए और अधिक सुंदर तरीका है कि उनकी राशि यह करो। या कम से कम या अधिक WPFish तरीका।

उत्तर

18

आपके द्वारा वर्णित परिदृश्य को देखते हुए, मैं गुणों को एक शैली और डेटा ट्रिगर के साथ सेट कर दूंगा। डेटा ट्रिगर डिफ़ॉल्ट बाध्यकारी का उपयोग करेगा जो डेटा संदर्भ है।

एक उदाहरण इस प्रकार दिखाई देंगे:

<Border> 
    <Border.Style> 
     <Style TargetType="Border"> 
      <Setter Property="Background" 
        Value="Orange" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding}" 
          Value="{x:Null}"> 
        <Setter Property="Background" 
          Value="Yellow" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 
</Border> 

सीमा नारंगी हो जाएगा जब तक कि डेटा संदर्भ रिक्त है, जिस स्थिति में पृष्ठभूमि पीला है।

+0

हम्म, आपके प्रश्न को दोबारा पढ़ने के बाद, मुझे नहीं लगता कि मैंने वास्तव में इसका उत्तर दिया है। –

+1

यह मूल रूप से सही उत्तर है। अपनी बाध्यकारी/शैली को सामान्य के रूप में सेट करें और डेटाकॉन्टेक्स्ट में ट्रिगर जोड़ें x: शैलियों/बाइंडिंग के एक अलग सेट पर स्विच करने के लिए शून्य है। –

+0

यह वही था जो मैं खोज रहा था। मैं सापेक्ष स्रोत में खोज गया था, FindAncestor, स्वयं जो भी वाक्यविन्यास है, इसलिए मैं भूल गया था कि मैं यह जानना चाहता था कि कोई संपत्ति शून्य है या नहीं। –

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