Существует свойство int для CustomControl (в приложении Silverlight 4), TextBlock отображается внутри элемента управления Canvas:
<Canvas Name="canvas" >
<Ellipse Fill="Yellow" Canvas.Top="8" Canvas.Left="8" Height="16" Width="16">
</Ellipse>
<TextBlock Name="TeamNumberTextBlock" Text="9" Canvas.Top="8" Canvas.Left="8" TextAlignment="Center" FontStyle="Italic" />
</Canvas>
Поскольку текст может быть изменен, он должен быть центрирован. Вот «CodeBehind-решение»:
public partial class FieldItem : UserControl
{
public FieldItem()
{
InitializeComponent();
}
public int TeamNumber
{
private get
{
return _iTeamNumber;
}
set
{
_iTeamNumber = value;
TeamNumberTextBlock.Text = _iTeamNumber.ToString();
TeamNumberTextBlock.SetValue(Canvas.LeftProperty, (TeamNumberTextBlock.Width - TeamNumberTextBlock.Width) / 2);
}
}
private int _iTeamNumber;
}
Когда кто-то установит новое значение для элемента управления, его свойство Canvas.Left будет пересчитано.
Возможно ли реализовать подобную функциональность с помощью привязки (или любого другого механизма, работающего в режиме разработки)?
Спасибо!