Ответ 1
Существует класс ContentPropertyAttribute
, который применяется к классу. WPF/Silverlight будет использовать отражение, чтобы определить, какое свойство использовать.
Если вы хотите сделать это с помощью пользовательского класса, вы можете сделать это следующим образом:
[ContentProperty("Bar")]
public class Foo : Control
{
public static DependencyProperty BarProperty = DependencyProperty.Register(
"Bar",
typeof(int),
typeof(Foo),
new FrameworkPropertyMetaData(0));
public int Bar
{
get { return (int)GetValue(BarProperty); }
set { SetValue(BarProperty, value); }
}
}
Затем вы можете указать его в XAML так:
<lcl:Foo>12</lcl:Foo>
Обновление
Поскольку он использует отражение, вам действительно не нужно делать DependencyProperty. Например, это также будет работать:
[ContentProperty("Bar")]
public class Foo : Control
{
public int Bar { get; set; }
}