2011-02-24 10 views
10

मेरे पास एक ग्रिड है जिसकी पंक्तियों को दृश्य मॉडल के आधार पर गतिशील रूप से आकार देने की आवश्यकता है। मैं निम्नलिखित की तरह कुछ करना चाहता हूं:क्या ग्रिड रोविडिनेशन पर ट्रिगर्स का उपयोग करना संभव है?

<RowDefinition Height="2*"> 
    <RowDefinition.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="True"> 
        <Setter Property="RowDefinition.Height" Value="2*"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="False"> 
        <Setter Property="RowDefinition.Height" Value="0"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </RowDefinition.Style> 
</RowDefinition> 

यह संकलित करता है, कोई त्रुटि नहीं फेंकता है, लेकिन ऐसा कोई प्रतीत नहीं होता है। क्या मुझे कुछ याद आ रही है, या क्या ग्रिड फॉर्म को खींचा जाने के बाद या उसके प्रभाव के बाद अपनी पंक्तियों का आकार बदलने की इजाजत नहीं देता है?

उत्तर

15

मुझे लगता है कि आपके Xaml कोड के साथ एकमात्र समस्या यह है कि आप RowDefinition पर ऊंचाई को व्यवस्थित करके डेटा ट्रिगर को ओवरराइट कर रहे हैं। इसके बजाय एक सेटर का उपयोग करने के साथ प्रयास करें

<RowDefinition> 
    <RowDefinition.Style> 
     <Style> 
      <Setter Property="RowDefinition.Height" Value="2*"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="True"> 
        <Setter Property="RowDefinition.Height" Value="2*"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="False"> 
        <Setter Property="RowDefinition.Height" Value="0"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </RowDefinition.Style> 
</RowDefinition> 
+0

हाँ। जैसे ही मैंने ऊंचाई की स्पष्ट सेटिंग हटा दी, समस्या दूर हो गई। अच्छी पकड़! – GWLlosa

+0

मुझे रोडिफिनिशन क्यों इंगित करना चाहिए। हाइट और संपत्ति के रूप में केवल ऊंचाई के साथ क्यों काम नहीं करता? मुझे यह समझ में नहीं आता – MrScf

4

मुझे पता है कि यह पोस्ट 3 साल पुराना है, लेकिन फिर भी यह किसी की मदद कर सकता है।

<RowDefinition> 
    <RowDefinition.Style> 
     <Style TargetType="RowDefinition"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="True"> 
        <Setter Property="Height" Value="2*"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Path=ShowSection}" Value="False"> 
        <Setter Property="Height" Value="0"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </RowDefinition.Style> 
</RowDefinition> 

मैं उसी स्थिति में था, मैं इसे लक्ष्य प्रकार को रोडिफिनिशन में सेट करके काम करने में कामयाब रहा।

+0

रोडिफिनिशन। हाइट को घटाया जा सकता है – Dummy

+1

@ डमी - सुधार के लिए धन्यवाद, अद्यतन एक्सएएमएल देखें :) –