Я пытаюсь создать пользовательский «TimePicker» - UserControl и немного борюсь с дизайном кода.
В XAML UserControl я создал ComboBox, который связывается с List<int> HoursList
-свойством. Это будет содержать все числа от 0 до 23. Я хочу создать DependencyProperty Hour
для отслеживания выбранного элемента ComboBox через Binding в другом файле XAML позже.
TimePicker.xaml
<Grid>
<!--Hours-->
<ComboBox Grid.Column="0" ScrollViewer.CanContentScroll="False"
ItemsSource="{Binding HoursList,RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
SelectedIndex="0" ItemStringFormat="{}{0:00}">
</ComboBox>
</Grid>
TimePicker.xaml.cs
public partial class TimePicker : UserControl
{
private List<int> hoursList;
public readonly List<int> HoursList
{
get
{
if (this.hoursList == null)
LoadHoursList();
return hoursList;
}
}
public TimePicker()
{
InitializeComponent();
}
/// <summary>
/// will create a new List<int> and fill it from 0-23 (int) representing the hours
/// </summary>
private void LoadHoursList()
{
this.hoursList = new List<int>();
for (int i = 0; i < 24; i++)
this.HoursList.Add(i);
}
}
Если я сейчас использую Control в другом XAML-файле, он будет выглядеть так:
Test.xaml
<my:TimePicker Margin="2" />
Моя проблема в том, что я могу получить доступ к HoursList-Property здесь. Но его следует использовать для загрузки значений по умолчанию только в элементе управления. Доступ должен быть возможен с DependencyProperty Hour
позже .. Так что я хочу скрыть HoursList.
Вот пример, который я хочу запретить:
<my:TimePicker Margin="2" HoursList="" />
Может быть, я не правильно понял механику .. любой совет ценится!