可以';无法使用FindResource找到CollectionViewSource
本文关键字:FindResource 找到 CollectionViewSource 可以 | 更新日期: 2023-09-27 18:25:29
在我的XAML代码中,我将CollectionViewSource定义为网格资源:
<Grid.Resources>
<CollectionViewSource x:Key="AgentsViewSource"
Source="{StaticResource Agents}">
<CollectionViewSource.SortDescriptions>
<componentModel:SortDescription PropertyName="ID" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Grid.Resources>
作为一个工具箱的子工具箱,它也是网格的子工具箱。我有一个ComboBox,它应该更改SortDescription
<ComboBox Name="SortOrderBox" ItemsSource="{Binding AvailableProperties}" SelectionChanged="newSortOrder_OnSelectionChanged" Width="130" FontSize="15"/>
后面有以下代码:
private void newSortOrder_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var newSortOrder = (string) SortOrderBox.SelectedItem;
var sortDescription = new SortDescription(newSortOrder, ListSortDirection.Descending);
var source = (CollectionViewSource) FindResource("AgentsViewSource");
source.SortDescriptions.Clear();
source.SortDescriptions.Add(sortDescription);
}
但是,当我尝试使用FindResource时,总会遇到一个异常。我真的不知道自己做错了什么,所以所有的投入都很感激。
您正试图在window/userControl资源下查找资源。
在网格上设置x:Name
并在网格实例上调用FindResource,因为它被声明为网格下的资源,而不是window/UserControl下的资源。
<Grid x:Name="grid">
.....
</Grid>
代码背后:
grid.FindResource("AgentViewSource")