Для этого я бы добавил свойства в мою модель представления, которые определяли видимость для каждого отрезка линии.
Затем каждый получатель свойства вычислит, должна ли линия быть видимой, на основе отображаемого числа.
Теперь вы можете связать свойство Visibility каждой строки с соответствующим свойством в вашей модели представления ивызовите OnPropertyChanged ("") (с пустой строкой), чтобы поднять всех слушателей для вашей модели представления.
Простым улучшением было бы выделение пользовательского элемента управления, отображающего одну цифру в ваших цифровых часах.Затем вы можете повторно использовать этот элемент управления для каждой цифры, которую необходимо отобразить.
Редактировать:
Я не буду кодировать весь элемент управления для вас (для чего это нужно?)Позвольте мне привести пример.Я предполагаю, что у вас есть набор линейных элементов управления, возможно, в сетке или что-то в этом роде.Чтобы нарисовать число, вам нужно показать некоторые линии и скрыть другие.
Теперь вам нужны xaml и модель представления, которая предоставляет данные.
Ваш Xaml должен выглядеть примерно так:
<Line X1="10" X2="10" Y1="10" Y2="20" Visibility="{Binding Line1Visibility, Mode=OneWay}" />
<Line X1="10" X2="20" Y2="10" Y2="10" Visibility="{Binding Line2Visibility, Mode=OneWay}" />
.... and so on
Вам нужно определить все строки, но вам не нужно называть их.Не используйте мои значения X и Y.Они только для примера.Также обратите внимание на привязку для Visibilily.Это односторонний процесс, поскольку мы не хотим устанавливать его из-под нашего контроля.
Теперь вам нужна модель вашего вида.Он должен определять свойства для всех видов и свойство, в котором вы устанавливаете число для отображения.Это должно быть что-то вроде этого:
public class DigitalNumberViewModel : INotifyPropertyChanged
{
private int _numberToDisplay;
public int NumberToDisplay
{
get { return _numberToDisplay; }
set
{
_numberToDisplay = value;
OnPropertyChanged("");
}
}
public Visibility Line1Visibility
{
get
{
switch (NumberToDisplay)
{
case 0:
return Visibility.Visible;
case 1:
return Visibility.Hidden;
//... and so on
}
}
}
public Visibility Line2Visibility
{ .... }
// ... and so on
}
Теперь у вас есть модель представления, которая определяет видимость для всех линий, и свойство, которое вы можете установить, которое будет вызывать событие измененного свойства для всех свойств в вашем представлении.модель.Вы должны быть в состоянии заполнить все остальное самостоятельно.: -)
Удачи!