gpt4 book ai didi

c# - 我如何告诉 Resharper ICollectionView 包含的类型?

转载 作者:行者123 更新时间:2023-11-30 16:50:23 25 4
gpt4 key购买 nike

我有以下 XAML:

<DataGrid ItemsSource="{Binding Path=FilteredPatients}" SelectedItem="{Binding Path=SelectedPatient}">
<DataGrid.Columns>
<DataGridTextColumn Header="Name"
Binding="{Binding Path=FormattedName}" />
<DataGridTextColumn Header="Date of Birth"
Binding="{Binding Path=BirthDate} />
<DataGridTextColumn Header="Gender"
Binding="{Binding Path=Gender} />
<DataGridTextColumn Header="Id"
Binding="{Binding Path=Id}" />
</DataGrid.Columns>
</DataGrid>

Resharper根据父控件的DataContext判断FilteredPatients和SelectedPatient是ok的。但是,FilteredPatients 是一个 ICollectionView,因此 Resharper 无法确定它包含 Patient 的实例,该实例具有 DataGrid 列绑定(bind)中指定的属性。

运行时一切正常,那么我如何告诉 Resharper FilteredPatients 包含的项目类型?

最佳答案

最简单的解决方案是禁用列的 Resharper 错误,因为这个问题不正确:

<!-- ReSharper disable Xaml.BindingWithContextNotResolved -->
<DataGridTextColumn />
<DataGridTextColumn />
<!-- ReSharper restore Xaml.BindingWithContextNotResolved -->

真正的解决方案是使用 DataGridTemplateColumn 而不是 DataGridTextColumn。这使您可以在 DataTemplate 中为每一列识别 DataType,但需要更多的 xaml:

<DataGrid ItemsSource="{Binding Path=FilteredPatients}" SelectedItem="{Binding Path=SelectedPatient}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataType="namespace:Patient">
<TextBlock Text={Binding FormattedName} />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

关于c# - 我如何告诉 Resharper ICollectionView 包含的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com