में विंडो या स्क्रीन आकार के आधार पर ग्रिड कॉलम मैक्सविड्थ कैसे सेट करें मेरे पास पहले कॉलम पर ग्रिडस्प्लिटर वाली विंडो में 3 कॉलम ग्रिड है। मैं पहले कॉलम के मैक्सविड्थ को मूल विंडो के एक तिहाई या पृष्ठ Width
(या ActualWidth
) पर सेट करना चाहता हूं और यदि संभव हो तो मैं इसे XAML में करना पसंद करूंगा।XAML
यह कुछ नमूना एक्सएएमएल है जो XamlPad (या इसी तरह) में खेलने के लिए है जो दिखाता है कि मैं क्या कर रहा हूं।
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Column1" Width="200"/>
<ColumnDefinition x:Name="Column2" MinWidth="50" />
<ColumnDefinition x:Name="Column3" Width="{ Binding ElementName=Column1, Path=Width }"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Background="Green" />
<GridSplitter Grid.Column="0" Width="5" />
<Label Grid.Column="1" Background="Yellow" />
<Label Grid.Column="2" Background="Red" />
</Grid>
</Page>
आप देख सकते हैं, सही स्तंभ चौड़ाई पहले कॉलम की चौड़ाई के लिए बाध्य है, इसलिए जब आप विभाजक का उपयोग कर बाएँ स्तंभ स्लाइड, अधिकार स्तम्भ आप स्लाइड तो एक ही :) करता है बाईं ओर बाएं कॉलम, आखिरकार यह आधा पृष्ठ/खिड़की और खिड़की के दाहिने तरफ स्लाइड करेगा, कॉलम 2 और 3 को धक्का दे रहा है।
मैं कॉलम 1 के मैक्सविड्थ को सेट करके इसे रोकना चाहता हूं खिड़की चौड़ाई का एक तिहाई (या ऐसा कुछ)। मैं इसे आसानी से कोड में कर सकता हूं, लेकिन इसे "एक्सएएमएल केवल" में कैसे करना है?
संपादित करें: डेविड श्मिट ने बाध्यकारी के बजाय साझा आकार समूह का उपयोग करने का सुझाव दिया, जो एक उत्कृष्ट सुझाव है। मेरे नमूना कोड इस तो ऐसा दिखाई देगा:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Grid IsSharedSizeScope="True">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Column1" SharedSizeGroup="ColWidth" Width="40"/>
<ColumnDefinition x:Name="Column2" MinWidth="50" Width="*" />
<ColumnDefinition x:Name="Column3" SharedSizeGroup="ColWidth"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Background="Green" />
<GridSplitter Grid.Column="0" Width="5" />
<Label Grid.Column="1" Background="Yellow" />
<Label Grid.Column="2" Background="Red" />
</Grid>
</Page>
कृपया किसी अन्य कॉलम की चौड़ाई के लिए बाध्यकारी के बजाय साझा आकार समूह का उपयोग करें! –
मैंने XamlPad में ऊपर xaml की कोशिश की और यह अजीब तरह से व्यवहार किया, लेकिन मैं तुम्हारा बिंदु देखता हूँ! धन्यवाद। –