2011-01-16 14 views
144

के बीच क्या अंतर है WPF के ListBox और ListView के बीच क्या अंतर है? मुझे उनकी संपत्तियों में कोई महत्वपूर्ण अंतर नहीं मिल रहा है। क्या अलग-अलग उपयोग हैं?ListBox और ListView

उत्तर

160

ListView मूल रूप से ListBox (और इससे प्राप्त विरासत) की तरह है, लेकिन इसमें View संपत्ति भी है। यह संपत्ति आपको वस्तुओं को प्रदर्शित करने का एक पूर्वनिर्धारित तरीका निर्दिष्ट करने की अनुमति देती है। बीसीएल में एकमात्र पूर्वनिर्धारित दृश्य GridView है, लेकिन आप आसानी से create your own कर सकते हैं।

एक और अंतर यह डिफ़ॉल्ट चयन विधा है: यह एक ListView

+14

बीसीएल द्वारा आपका क्या मतलब है? धन्यवाद। –

+34

@ डैनियल अरमानस्को, बीसीएल = [बेस क्लास लाइब्रेरी] (http://en.wikipedia.org/wiki/Base_Class_Library) –

9

एक ListView आप इसके लिए views का एक सेट को परिभाषित करते हैं के लिए एक ListBox के लिए Single, लेकिन Extended है और आप एक देशी तरीका (WPFbinding समर्थन) के लिए देता है परिभाषित views का उपयोग कर ListView के प्रदर्शन को नियंत्रित करें।

उदाहरण:

XAML

<ListView ItemsSource="{Binding list}" Name="listv" MouseEnter="listv_MouseEnter" MouseLeave="listv_MouseLeave"> 
     <ListView.Resources> 
      <GridView x:Key="one"> 
       <GridViewColumn Header="ID" > 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding id}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
       <GridViewColumn Header="Name" > 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding name}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
      <GridView x:Key="two">      
       <GridViewColumn Header="Name" > 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding name}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
     </ListView.Resources> 
     <ListView.Style> 
      <Style TargetType="ListView"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ViewType}" Value="1"> 
         <Setter Property="View" Value="{StaticResource one}" /> 
        </DataTrigger> 
       </Style.Triggers> 
       <Setter Property="View" Value="{StaticResource two}" /> 
      </Style> 
     </ListView.Style> 

Code Behind:

private int viewType; 

    public int ViewType 
    { 
     get { return viewType; } 
     set { viewType = value; 
     UpdateProperty("ViewType"); 
     } 
    }   

    private void listv_MouseEnter(object sender, MouseEventArgs e) 
    { 
     ViewType = 1; 
    } 

    private void listv_MouseLeave(object sender, MouseEventArgs e) 
    { 
     ViewType = 2; 
    } 

उत्पादन:

सामान्य दृश्य: देखें 2 ऊपर XAML

Normal

माउस ले जाएँ इसमें देखें: देखें 1 ऊपर XAML

में

Mouse Over

आप एक ListBox में ऊपर प्राप्त करने का प्रयास करते हैं, तो शायद आप के लिए ListBox की ControlTempalate/ItemTemplate एक बहुत अधिक कोड लिखने पहुंच जाएंगे।

3

सूचीदृश्य सूची बॉक्स नियंत्रण से प्राप्त होता है। एक सबसे महत्वपूर्ण अंतर सूचीदृश्य डिफ़ॉल्ट रूप से विस्तारित चयन मोड का उपयोग करता है। लिस्टव्यू व्यू नामक एक संपत्ति भी जोड़ती है जो आपको कस्टम आइटम्स पैनेल की तुलना में एक अमीर तरीके से दृश्य को अनुकूलित करने में सक्षम बनाती है। ग्रिडव्यू के साथ सूचीदृश्य का एक वास्तविक जीवन उदाहरण फ़ाइल एक्सप्लोरर का विवरण दृश्य है। ग्रिड व्यू के साथ लिस्टव्यूव एक कम शक्तिशाली डेटा ग्रिड है। डाटाग्रिड नियंत्रण सूची के परिचय के बाद इसका महत्व खो गया।