SeveralotherquestionsonSO मेरे पास एक ही निष्कर्ष पर आया है - एक ItemsControl
का उपयोग DataTemplate
के साथ प्रत्येक आइटम के लिए बनाए गए आइटमों के लिए किया गया है जैसे कि वे ग्रिड जैसा दिखते हैं, उपयोग करने से अधिक सरल (विशेष रूप से प्रारूपित) एक ListView
।डब्ल्यूपीएफ - लेआउट के दौरान नृत्य/कूदने से आइटम्स कंट्रोल छद्म-ग्रिड के कॉलम को कैसे रोकें
कोड जैसा दिखता है:
<StackPanel Grid.IsSharedSizeScope="True">
<!-- Header -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Column Header 1" />
<TextBlock Grid.Column="1" Text="Column Header 2" />
</Grid>
<!-- Items -->
<ItemsControl ItemsSource="{Binding Path=Values, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding ColumnProperty1}" />
<TextBlock Grid.Column="1" Text="{Binding ColumnProperty2}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
समस्या जो मैं देख रहा हूं वह यह है कि जब भी मैं उस ऑब्जेक्ट को स्वैप करता हूं जिस पर ItemsSource
बाध्य होता है (यह एक ObservableCollection
है जिसे मैं स्पष्ट रूप से संदर्भित करने के बजाय संदर्भ को प्रतिस्थापित करता हूं -एड), पूरे 'ग्रिड' कुछ सेकंड के लिए नृत्य करता है।
संभवतः यह सभी Auto
-width कॉलम को मिलान करने के लिए कुछ लेआउट पास कर रहा है।
यह मेरे उपयोगकर्ताओं के लिए बहुत विचलित है और मैं इसे हल करना चाहता हूं। क्या किसी और ने इसे देखा है?
मुझे एक ही समस्या है। क्या आपको कभी इसका संकल्प मिला? –
@ रिक: दुर्भाग्य से नहीं, मैंने कभी भी काम नहीं किया कि क्या हो रहा था। यह इतना परेशान हो गया कि मैंने निश्चित रूप से निश्चित चौड़ाई वाले स्तंभों का चयन किया, हालांकि निश्चित रूप से समस्याओं के एक अलग सेट के साथ आया था। यह मेरे मामले में कम बुराई था। –
@ रिक, क्या आप WinForms के अंदर होस्टिंग कर रहे थे? इसके लिए एक रेपो केस प्राप्त करना अच्छा होगा। आप .NET का किस संस्करण का उपयोग कर रहे हैं? मैं 3.5 (प्री-एसपी 1) का उपयोग कर रहा था। –