ListBox और ListView के बीच अंतर क्या है


198

WPF की सूची बॉक्स और सूची दृश्य के बीच अंतर क्या है? मैं उनके गुणों में कोई महत्वपूर्ण अंतर नहीं पा सकता हूं। क्या अलग-अलग विशिष्ट उपयोग हैं?

जवाबों:


211

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

एक अन्य अंतर डिफ़ॉल्ट चयन मोड है: यह Singleए के लिए है ListBox, लेकिन Extendedए के लिएListView


32

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

उदाहरण:

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

साधारण

माउसओवर दृश्य: ऊपर 1 देखें XAML

ऊपर टहलना

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


2019-04-29 (अतिरिक्त समापन ब्रेस और UpgradProperty) के रूप में कोड बिहाइंड मान्य कोड नहीं है। क्या इसे सुधारा जा सकता है?
फ्रेडेरिक

2
यह पहले से ही सही है। UpdateProperty परिवर्तित संपत्ति को सूचित करने की एक विधि है। यह आपके लिए बिलकुल अलग हो सकता है। संपत्ति को अधिसूचित करने के लिए आप जिस भी विधि का उपयोग कर रहे हैं, उसका उपयोग करें। और कौन सा अतिरिक्त ब्रेस?
Kylo Ren

अच्छी तरह से स्पष्टीकरण के लिए धन्यवाद। और आप सही हैं। मुझे लगता है कि मैं ब्रेस स्थानों से मंत्रमुग्ध था। वास्तव में कोई अतिरिक्त ब्रेस नहीं है। यदि आप सहमत हैं तो मैं थोड़ा कोड पुनः देखूंगा।
फ्रेडरिक

9

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.