簡體   English   中英

列表視圖中的數據網格作為項目模板,並從數據庫中讀取數據

[英]Data grid inside list view as item template and Read Data from Database

我已經通過WPF和下面的代碼創建了一個項目

    <UserControl.Resources>                     
        <x:Array x:Key="OrderDataGridItems" Type="{x:Type system:String}">
            <system:String>1</system:String>
            <system:String>2</system:String>
            <system:String>3</system:String>
        </x:Array>      
        <DataTemplate x:Key="TemplateWithDataGrid" >
            <DataGrid ItemsSource="{StaticResource OrderDataGridItems}">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Column1"
                                        Width="*" />
                        <DataGridTextColumn Header="Column2"
                                        Width="*" />
                    </DataGrid.Columns>
                </DataGrid> 
        </DataTemplate>       
     </UserControl.Resources>

    Triggers>

    <Grid>         
     <ListView x:Name="CustomersOrderList" ItemTemplate="{StaticResource TemplateWithDataGrid}" >    
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>   
    </Grid>
</UserControl>

上面的代碼僅適用於靜態資源值(在OrderDataGridItems中)。 listview內的這個CustomersOrderList與數據庫值配合良好。 我的要求是從數據庫中獲取並填充數據庫中的所有數據到DataTemplate和ListView中,這可能嗎? 或者,請幫助我獲得此解決方案的工作,我們將不勝感激,非常感謝您的支持。

你並不需要創建Templates之前,除非你是不是重復使用這些模板。 為簡單起見,我在下面給出了示例代碼,以使用來自外部源的數據填充DataGrid

查看-

 <Grid>
    <DataGrid ItemsSource="{Binding OrderDataGridItems }" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Column1" Width="Auto" Binding="{Binding CountryName}" />
        </DataGrid.Columns>
    </DataGrid>
</Grid>

CodeBehind-如果遵循MVVM,則應該在ViewModel中使用它。

public partial class MainWindow : Window, INotifyPropertyChanged
{
    private List<CountryData> orderDataGridItems;
    public List<CountryData> OrderDataGridItems
    {
        get { return orderDataGridItems; }
        set
        {
            orderDataGridItems = value;
            OnPropertyChanged("OrderDataGridItems");
        }
    }
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = this;

        var listFromDataBase = new List<CountryData>();
        listFromDataBase.Add(new CountryData { CountryName ="India"});

        OrderDataGridItems = listFromDataBase;
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM