c# - 我将如何检查 e.item 是否与 collectionviewsource 中的对象相同?
问题描述
我想检查 e.Item 是否与 collectionviewsource 中的任何对象相同,如果是,则它们被接受。
namespace Planteskole.WPF.Views
{
/// <summary>
/// Interaction logic for HomeView.xaml
/// </summary>
public partial class HomeView : UserControl
{
private readonly PlantContext _context = new PlantContext();
private CollectionViewSource PlantViewSource;
private CollectionViewSource AreaViewSource;
private CollectionViewSource LocationViewSource;
public HomeView()
{
InitializeComponent();
PlantViewSource = (CollectionViewSource)FindResource(nameof(PlantViewSource));
AreaViewSource = (CollectionViewSource)FindResource(nameof(AreaViewSource));
LocationViewSource = (CollectionViewSource)FindResource(nameof(LocationViewSource));
}
private void Grid_Loaded(object sender, RoutedEventArgs e)
{
//_context.Database.EnsureDeleted();
_context.Database.EnsureCreated();
_context.Plants.Load();
_context.Areas.Load();
_context.Locations.Load();
PlantViewSource.Source = _context.Plants.Local.ToObservableCollection();
AreaViewSource.Source = _context.Areas.Local.ToObservableCollection();
LocationViewSource.Source = _context.Locations.Local.ToObservableCollection();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
_context.SaveChanges();
PlantDataGrid.Items.Refresh();
}
private void CollectionViewSource_Filter(object sender, FilterEventArgs e)
{
for (int i = 0; i < 100; i++)
{
if ((e.Item as Area).Id == 20)
{
e.Accepted = true;
}
else
{
e.Accepted = false;
}
}
}
}
}
<UserControl.Resources>
<CollectionViewSource x:Key="PlantViewSource"/>
<CollectionViewSource x:Key="AreaViewSource"/>
<CollectionViewSource x:Key="LocationViewSource" Filter = "CollectionViewSource_Filter"/>
</UserControl.Resources>
<Grid Loaded="Grid_Loaded" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<ListBox Grid.Row="0" x:Name="PlantDataGrid" ItemsSource ="{Binding Source={StaticResource AreaViewSource}}">
<ListBox.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Name}">
<ListBox ItemsSource ="{Binding Source={StaticResource LocationViewSource}}">
<ListBox.ItemTemplate>
<DataTemplate>
<Expander Header="{Binding Name}">
<Grid>
<DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True"
ItemsSource="{Binding Source={StaticResource PlantViewSource}}" RowDetailsVisibilityMode="VisibleWhenSelected"
RenderTransformOrigin="0.488,0.251">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Id}" Header="Id" Width="auto" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Name}" Header="Name" Width="auto"/>
<DataGridTextColumn Binding="{Binding Amount}" Header="Amount" Width="auto"/>
<DataGridTextColumn Binding="{Binding Sellable}" Header="Sellable" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Expander>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Expander>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Grid.Row="1" Content="Save" HorizontalAlignment="Center" Margin="0 10" Click="Button_Click" Height="20" Width="124"/>
</Grid>
</UserControl>
最终结果应该是,如果区域表中的列的 Id 与数据库中位置表中的值“areaid”相同,则该位置将显示在该区域下。
我是新来的,所以我不知道是否应该将所有代码都放在帖子中。随时纠正我,并提前感谢!
解决方案
推荐阅读
- asp.net - 关闭带有特定 url 的浏览器窗口(由不同的浏览器打开)
- java - 使用 StrategySelectionException 和 BeanCreationException (entityManagerFactory) 启动问题应用程序
- codeigniter - Codeigniter 4 pdf url路由
- windows-7-embedded - 当文本字段在 Chrome 或 Safari 中处于活动状态时,如何强制打开 Windows Embedded PosReady 7 键盘
- skia - 类似于skia中“丢弃”的API
- python - python数据模拟中的最佳工作流程:数组VS字典VS数据框
- mongodb - 使用 Fluentd 将数据传输到 DocumentDB
- json - JQ:将对象添加到具有相同键名的嵌套 json
- javascript - 在反应中思考 - 计算字段
- c++ - 在 C++ 中将 DDMMMYY[25JUN20] 转换为 YYYYMMDD[20200620]