У меня возникли проблемы при реализации CollectionViewSource в silverlight. Я новичок в этой теме, поэтому в основном я следил за тем, что я нахожу при поиске в Интернете. Вот что я пытался сделать до сих пор.
Я создаю CollectionViewSource в теге ресурсов:
<UserControl.Resources>
<CollectionViewSource x:Key="TestCVS">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Value" Direction="Ascending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
Затем я связываю свой TestCVS в шаблоне HierarchicalDataTemplate:
<common:HierarchicalDataTemplate ItemsSource="{Binding Source={StaticResource TestCVS}}">
<common:HierarchicalDataTemplate.ItemTemplate>
<common:HierarchicalDataTemplate>
<Border BorderBrush="#FF464646" BorderThickness="1" CornerRadius="3" Padding="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock TextWrapping="Wrap" Text="{Binding MyClassField}"/>
</StackPanel>
</Grid>
</Border>
</common:HierarchicalDataTemplate>
</common:HierarchicalDataTemplate.ItemTemplate>
</common:HierarchicalDataTemplate>
Теперь, в коде позади я назначаю Source для TestCVS в свойстве, как это:
private ObservableCollection<MyClass> _MyClass;
public ObservableCollection<MyClass> MyClass
{
get { return _MyClass; }
set
{
var testCVS = (this.Resources["TestCVS"] as CollectionViewSource);
if (testCVS != null)
testCVS.Source = value;
}
}
После тестирования я понимаю, что информация не отображается на экране, и я не знаю, почему, может кто-нибудь помочь мне в этом вопросе?
Надеюсь, это имеет какой-то смысл, заранее спасибо!