2009-10-16 15 views
5

मेरे पास IsSynchronizedWithCurrentItem="True" के साथ एक ही डेटासोर्स के साथ कई सूची दृश्य हैं और मैं इस डेटासोर्स में आइटम जोड़ने की गतिशीलता में हूं।डब्ल्यूपीएफ सूची दृश्य हमेशा आखिरी जोड़ा गया आइटम केंद्रित?

समस्या तब होती है जब स्क्रॉल प्रकट होता है, अतिरिक्त आइटम दिखाई नहीं देते हैं जब तक कि मैं स्क्रॉलबार नहीं ले जाता। क्या मुझे इस उद्देश्य के लिए एक और नियंत्रण का उपयोग करना चाहिए .. या अंतिम जोड़ा गया आइटम दृश्य (और स्क्रॉलबार) कैसे ला सकता है।

अब तक मैं सीधे एक्सएएमएल में सब कुछ कर रहा था, इसलिए यदि संभव हो तो मैं ऐसे समाधान की सराहना करता हूं।

उत्तर

1

मैं एक समाधान के साथ आते हैं:

यह सभी मामलों में लागू नहीं किया जा सकता है, लेकिन यह इस एक यह पर्याप्त है!

चाल पर है सूची सूची दृश्य स्क्रॉलबार अक्षम करें और इसे स्क्रॉलव्यूअर से घिराएं।

...

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> <!-- This is needed! --> 
     ... 
    </Grid.RowDefinitions> 

..

<ScrollViewer x:Name="MyScrollViewer" Grid.Row="0" > 
      <ListView Name="MyListView" 
         ItemsSource="{Binding}" 
         IsSynchronizedWithCurrentItem="True" 
         ScrollViewer.VerticalScrollBarVisibility="Disabled" /> 
</ScrollViewer> 

...

</Grid> 

तो बस अगर जरूरत कॉल

MyScrollViewer.ScrollToEnd(); 
0

यह संदिग्ध लगता है, लेकिन यदि यह सत्य भी है, तो आप हमेशा ListView.BringIntoView() विधि को कॉल कर सकते हैं ... चयनित आइटम को देखने में लाएं :)।

+0

हाँ .. आप सही हैं, लेकिन आपको अंतिम आइटम का चयन करने और इसे देखने के लिए थोड़ा और कोड लिखना होगा .. लेकिन यह भी एक संभावना है –

2

मुझे लगता है कि आप विधि का उपयोग करना पड़ सकता है:

ListView.ScrollIntoView(ListView.SelectedItem); 
1
if (!(myListView.Items.IsEmpty)) 
{ 
    myListView.ScrollIntoView(myListView.Items[myListView.Items.Count - 1]); 
} 

आशा है कि मदद करता है!

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