我已经通过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中,这可能吗?或者,请帮助我获得此解决方案的工作,我们将不胜感激,非常感谢您的支持。
答案 0 :(得分:0)
除非您不重复使用这些模板,否则无需创建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));
}
}