2013-01-22 18 views
5

में यूआई वर्चुअलाइजेशन मैं .NET 4.5/VS2012 उपयोग कर रहा हूँ सक्षम करने के लिए, और मैं एक ListView इसकैसे स्टैंडर्ड WPF ListView

<ListView 
    VirtualizingPanel.IsContainerVirtualizable="True" 
    VirtualizingPanel.IsVirtualizing="True" 
    VirtualizingPanel.IsVirtualizingWhenGrouping="True" 
    Grid.Row="1" 
    Name="eventLogList" 
    Margin="5,0,5,0" 
    BorderBrush="Black" 
    BorderThickness="2" 
    ItemsSource="{Binding EventLogs}" 
    SelectedItem="{Binding SelectedEventLog}" 
    local:ListViewSorter.CustomListViewSorter="EventLogViewer.UI.EventLogItemComparer" 
    SelectionMode="Single"> 

    <ListView.GroupStyle> 
     <GroupStyle HidesIfEmpty="False"> 
      <GroupStyle.ContainerStyle> 
       <Style TargetType="GroupItem"> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="GroupItem"> 
           <Expander IsExpanded="True"> 
            <Expander.Header> 
             <TextBlock FontSize="20" TextWrapping="Wrap" Margin="0,10,0,5" > 
             <Bold><TextBlock Text="{Binding Name}"/></Bold> - <TextBlock FontSize="20" Text="{Binding ItemCount}"/> logs 
            </TextBlock> 
            </Expander.Header> 
            <ItemsPresenter/> 
           </Expander> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </GroupStyle.ContainerStyle> 
     </GroupStyle> 
    </ListView.GroupStyle> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn 
       Header="event id" 
       Width="120" 
       DisplayMemberBinding="{Binding EventID}" /> 
      <GridViewColumn 
       Header="level" 
       Width="160" 
       DisplayMemberBinding="{Binding Level}" /> 
      <GridViewColumn 
       Header="server" 
       Width="160" 
       DisplayMemberBinding="{Binding Server}" /> 
      <GridViewColumn 
       Header="log name" 
       Width="160" 
       DisplayMemberBinding="{Binding LogName}" /> 
      <GridViewColumn 
       Header="source" 
       Width="240" 
       DisplayMemberBinding="{Binding Source}" /> 
      <GridViewColumn 
       Header="logged" 
       Width="240" 
       DisplayMemberBinding="{Binding Logged}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

की तरह कुछ लेकिन फिर भी प्रदर्शन पर सभी में सुधार नहीं किया गया है लग रहा है। मैं एक उदाहरण ListBox, लेकिन कैसे एक ListView virtualize करने के लिए उपयोग कर पाया? मैं काफ़ी संघर्ष किया। मैंने सुना है कि समूह के साथ, वर्चुअलाइजेशन WPF के पिछले संस्करण में बंद कर दिया है, लेकिन .NET 4.5 के साथ, WPF एक IsVirtualizingWhenGrouping संपत्ति है, मैं पहले से ही True पर सेट करें।

अद्यतन: अपराधी कस्टम स्टाइल, इसे हटाने के बाद, सूची दृश्य को सुचारू रूप से मक्खन एक lot.Also देख सकते हैं

उत्तर

3

This लेख आपको मदद मिलेगी की तरह चलाता है ..

+1

दूसरा लिंक बहुत मदद नहीं कर रहा है क्योंकि मैं बजट कसकर हूं और एमएसडीएन चर्चा के लिए वाणिज्यिक उपयोग करने का जोखिम नहीं उठा सकता, मैं अभी भी पच रहा हूं, मैंने कुछ कस्टम शैली का उपयोग किया है, उन्हें अक्षम करने की कोशिश करेगा परीक्षण करने के लिए। – imgen

+1

कस्टम शैली को निष्क्रिय करने के बाद, इस मुद्दे को हल किया गया है। एक तरह से हालांकि दोनों दुनिया का सबसे अच्छा पाने के लिए देख रहे हैं। – imgen

6

"यूआई वर्चुअलाइजेशन भंडार केवल visib स्मृति में लेकिन एक डेटा-बाइंडिंग परिदृश्य में ले आइटम स्मृति में पूरे डेटा संरचना संग्रहीत करता है। इसके विपरीत, डेटा वर्चुअलाइजेशन भंडार केवल डेटा आइटम स्मृति में स्क्रीन पर दिख रहे। "

" डिफ़ॉल्ट रूप से, यूआई वर्चुअलाइजेशन ListView और ListBox नियंत्रण के लिए सक्षम किया गया है, जब उनकी सूची आइटम डेटा के लिए बाध्य कर रहे हैं। "

For more info view the original MSDN source.

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