2013-12-09 2 views
6

प्रदर्शित करने और छिपाने के लिए मेरे पास एक डब्ल्यूपीएफ एप्लीकेशन है जिसमें ग्रिड होता है। ग्रिड को 3 कॉलम में विभाजित किया गया है जिसमें तीसरी ग्रिड लोड होने पर शून्य चौड़ाई है।डब्ल्यूपीएफ डेटा ट्रिगर ग्रिड कॉलम एक्सएएमएल

मेरे पास दो दो कॉलम में दो डेटाग्रिड्स हैं। जब डेटाग्रिड में से किसी एक में चयनित आइटम अन्य डेटाग्रिड परिवर्तनों को बदलता है तो यह मान प्रदर्शित करता है, यानी एक मास्टर विवरण टेम्पलेट। यह सब ठीक काम करता है।

डेटाग्रिड में एक मान है कि अगर चुना गया है तो मैं इस तीसरे कॉलम को अपनी चौड़ाई शून्य से 2 * में बदलना चाहता हूं। मुझे नहीं पता कि यह कैसे करें?

मैं इसे एक्सएएमएल के माध्यम से प्राप्त करना चाहता हूं। मैं डेटा ट्रिगर्स & वैल्यू कन्वर्टर्स देख रहा हूं। मैंने परीक्षण के लिए जल्दी से नीचे कुछ कोड लिखा था। मैंने पढ़ा है कि स्तंभ को चौड़ाई = 0 पर सेट करना निर्भरता संपत्ति सेटिंग प्राथमिकता सूची पर शायद अधिक है। क्या ऐसा करने के लिए वैसे भी है या क्या मुझे कोड का उपयोग करने की आवश्यकता होगी?

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition Width="2*"/> 
     <ColumnDefinition Width="0"/> 
    </Grid.ColumnDefinitions> 

    <DataGrid Grid.Column="0" 
       ItemsSource="{Binding OrderList}" 
       SelectedItem="{Binding OrderSelected}"     
       AutoGenerateColumns="True">          
    </DataGrid> 

    <TextBox Grid.Column="1" Text="{Binding OrderSelected.Name}"> 
    </TextBox> 

    <Grid x:Name="columnHideSeek" Grid.Column="2" Background="Blue"> 
     <Grid.Style> 
      <Style> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding OrderSelected.Name}" Value="Mark"> 
         <Setter Property="Grid.Width" Value="10"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Grid.Style> 
    </Grid> 

</Grid> 
+1

मैं चौड़ाई – Paparazzi

+0

पर उपयोगकर्ता दृश्यता को प्रदर्शित करता हूं जो अन्य स्तंभों के आकार को तब दिखाई देगा जब यह दिखाई नहीं दे रहा है? – mHelpMe

+0

मैंने ढहने की कोशिश की और छिपी कोशिश की। हालांकि कुछ भी नहीं हो रहा है। तीसरे कॉलम में अभी भी दो कॉलम – mHelpMe

उत्तर

17

सही DataTrigger का उपयोग करके, यह पूरी तरह से संभव है। सबसे पहले, यूआई तत्व यह है कि आप बदलना चाहते हैं के लिए Trigger जोड़ने ... ColumnDefinition, नहीं Grid:

<ColumnDefinition> 
    <ColumnDefinition.Style> 
     <Style TargetType="{x:Type ColumnDefinition}"> 
      <Setter Property="Width" Value="10" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding OrderSelected.Name}" Value="Mark"> 
        <Setter Property="Width" Value="2*" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ColumnDefinition.Style> 
</ColumnDefinition> 

इसके बाद, ColumnDefinition तत्व पर Width निर्धारित नहीं करते हैं, लेकिन इसके बजाय Style में। अन्यथा WidthColumnDefinition तत्व पर DataTrigger से मान सेट को ओवरराइड कर देगा।

+0

के आकार पर असर पड़ रहा है, धन्यवाद- एक बार फिर! उत्तम! – mHelpMe

+0

आप मेरा दिन बचाओ! – GreenEyedAndy

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