出于某种原因,我无法让我的ListBox
显示来自CollectionViewSource
的数据。这是代码......
public class AppTest
{
public int Priority { get; set; }
public string TestName { get; set; }
}
public class AppTestProvider
{
public List<AppTest> GetAppTests()
{
return new List<AppTest>()
{
new AppTest() { Priority=1, TestName = "Application Setup" },
new AppTest() { Priority=2, TestName = "File System Permissions" }
};
}
}
......现在是Xaml ......
<Window.Resources>
<ObjectDataProvider x:Key="AppTests" ObjectType="{x:Type Application:AppTestProvider}" MethodName="GetAppTests" />
<CollectionViewSource x:Key="cvs" Source="{Binding AppTests}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Priority" Direction="Ascending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</Window.Resources>
<Grid>
<ListBox x:Name="TestList" ItemsSource="{Binding Source={StaticResource cvs}}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TestName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
如果我将ItemsSource
的{{1}}更改为如此(从ListBox
获取数据而不是 CVS),则会显示数据,但是没有排序...
ObjectDataSource
我确信这一定非常简单。我似乎无法让它发挥作用!
答案 0 :(得分:4)
替换此<CollectionViewSource x:Key="cvs" Source="{Binding AppTests}">
<CollectionViewSource x:Key="cvs" Source="{StaticResource AppTests}">
。
您在XAML中定义referring to resource
,因此您需要使用StaticResource
代替Binding
来引用ObjectDataProvider
,就像您在以后设置ItemsSource的方法中所做的那样你的listBox。