可以';无法使用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时,总会遇到一个异常。我真的不知道自己做错了什么,所以所有的投入都很感激。

可以';无法使用FindResource找到CollectionViewSource

您正试图在window/userControl资源下查找资源。

在网格上设置x:Name在网格实例上调用FindResource,因为它被声明为网格下的资源,而不是window/UserControl下的资源。

<Grid x:Name="grid">
   .....
</Grid>

代码背后:

grid.FindResource("AgentViewSource")