среда, 28 мая 2008 г.

Первый опыт работы WPF

Последнее время у нас в конторе наблюдается тотальное увлечение WPF. Я тоже решил с ним познакомится.
Для начала поставил себе задачу отобразить простейшее дерево созданное из вот таких вот структурок:

public class SPObject
{
public string Title{get;set;}
public Guid ID {get;set;}
public List Childs = new List();
}

я нашел даже пример того как это делается ,но как я не бился у меня это не работало. Я просто получал окно где отображался лишь первый уровень дерева.

Вот XML которым я это описал

<Window x:Class="WPF_FirstProject.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:WPF_FirstProject"
Title="Main window" Height="300" Width="300" Loaded="Window_Loaded">
<Window.Resources>
<HierarchicalDataTemplate DataType="{x:Type src:SPObject}" ItemsSource="{Binding Path=Childs}">
<TextBlock Margin="10,0,10,0" Text="{Binding Title}"/>
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView Name="SPTreeView">
<TreeViewItem ItemsSource="{Binding Path=Childs}" Header="{Binding Title}"> </TreeViewItem>
</TreeView>
</Grid>
</Window>


но он так же не работал. После длительных экспериментов и сравнении кода примера и моего обнаружилось одно отличие - в примере структура содержит лишь проперти ,а у меня она содержала филд.
После замены структуры на вот такую - все заработало:


public class SPObject
{
public string Title{get;set;}
public Guid ID {get;set;}
public List Childs { get; set; }
}


Очень не очевидная особенность WPF. :(

1 комментарий:

modosansreves комментирует...

'Childs' должен быть 'Children'.

вот...