在我的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时,我总是得到一个例外。我真的不知道我做错了什么,所以所有的输入都很受欢迎。
答案 0 :(得分:2)
您正在尝试在window / userControl资源下查找资源。
在网格上设置 x:Name
, 在网格实例上调用FindResource ,因为它被声明为网格下的资源而不是窗口/用户控件。
<Grid x:Name="grid">
.....
</Grid>
代码背后:
grid.FindResource("AgentViewSource")