Мне кажется, что я упустил что-то очевидное, но при создании пользовательского элемента управления в Silverlight я могу объявить свойства как публичные, и они будут отображаться при создании деклараций XAML, поэтому я легко могу сделать что-то вроде этого:
public class MyControl : UserControl
{
public string Title {get; set;}
}
А это:
<local:MyControl Title="Hello World" />
Однако свойства не всегда являются простыми типами, у меня может быть сложное свойство, например, список, который определяет 1 или более столбцов и определяет поле, которое должно быть связано с ним. С существующими элементами управления синтаксис для определения этих значений в XAML является прямым:
<local:MyControl Title="People List">
<local:MyControl.Columns>
<local:MyControlColumn Heading="Column 1" Binding="{Binding Name}" />
<local:MyControlColumn Heading="Column 2" Binding="{Binding Age}" />
</local:MyControl.Columns>
</local:MyControl>
Однако я не понимаю, как заставить это работать в определении класса:
public class MyControl : UserControl
{
public string Title {get; set;}
public IEnumerable ItemSource {get; set;}
public ObservableCollection<MyControlColumn> Columns {get; set;} // ?
}
public class MyControlColumn
{
public string Heading {get; set;}
public ??? Binding {get; set;} // ?
}
Может ли кто-нибудь указать мне правильное направление для составления списка и свойств привязки?