c# - 列表视图内的数据网格作为项目模板并从数据库中读取数据
问题描述
我通过 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));
}
}
推荐阅读
- visual-c++ - Helloworld MFC 应用程序抛出异常
- autocad - 通过 appload (autoLISP) 加载例程时运行函数
- javascript - UnhandledPromiseRejectionWarning :异步回调函数中的错误处理
- javascript - Location.watchPositionAsync 未将状态设置为位置
- python - Pandas:修改类型列表的另一列中指示的列
- php - 未捕获的错误:调用成员函数 prepare() (PDO, php)
- angular - 单击 angular mat-chip 选择不触发 valueChanges 和芯片值在 valueChanes 事件中不可用
- javascript - 动态创建具有 onAction={} 属性的 JSX 元素,不更新状态(它们已损坏)
- java - 使用 JTA 时无法使用 EntityTransaction。使用非 jta
- java - 根据用户的要求制作一个从 x 打印到 y 数字的程序