У меня есть пользовательский элемент управления named- RoomAndPersonsAccommodationItem и внутри меня есть недвижимость в номере:МОФ таможенного контроля локального свойства связывания
public static readonly DependencyProperty roomProperty =
DependencyProperty.Register("Room", typeof(RoomData),
typeof(RoomAndPersonsAccommodationItem), new FrameworkPropertyMetadata(null));
public RoomData RoomProperty
{
get { return GetValue(roomProperty) as RoomData; }
set { SetValue(roomProperty, value); }
}
private RoomData room = null;
public RoomData Room
{
get { return room; }
set { room = value; }
}
RoomAndPersonsAccommodationItem устанавливается как DataTemplate на ListView:
<ListView Name="RoomsListView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Controls:RoomAndPersonsAccommodationItem Room="{Binding Path=., Mode=TwoWay}" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
В классе, где есть выше ListView- RoomsListView У меня есть этот код:
RoomsListView.ItemsSource = reservation.Rooms;
//reservation.Rooms is List<RoomData>
P p РОБЛЕМА здесь:
<Controls:RoomAndPersonsAccommodationItem Room="{Binding Path=., Mode=TwoWay}" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
Я хочу, чтобы связать номер свойство объекта номер из ItemSource на ListView, но я получаю пустой. Кто-нибудь знает, где я ошибаюсь? Возможно, здесь: Room = "{Binding Path =., Mode = TwoWay}" или в декларации DependencyProperty?
Благодаря Martin
UPDATE:
Еще не работает ... Результат всегда равна нулю. Я попробовал много вариантов, чтобы привязать тег или DataContext, но ничего не происходит. Я полагаю, что проблема не в DependencyProperty. Это где-то в связывании я вещь ... Это код еще раз:
private ReservationData reservation = null;
//Methods
private void fillForms()
{
//Logic
RoomsListView.ItemsSource = reservation.Rooms;
//Logic
}
Это ListView с DataTemplate:
<ListView Name="RoomsListView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Controls:RoomAndPersonsAccommodationItem
Room="{Binding}"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
И DependencyProperty в RoomAndPersonsAccommodationItem:
public static readonly DependencyProperty RoomProperty =
DependencyProperty.Register(
"Room", typeof(RoomData), typeof(RoomAndPersonsAccommodationItem),
new FrameworkPropertyMetadata(null));
public RoomData Room
{
get { return (RoomData)GetValue(RoomProperty); }
set {
SetValue(RoomProperty, value); }
}
ОБНОВЛЕНИЕ 2
Это РЕШЕНИЕ Указанный выше источник является правильным. Неправильный результат исходил из того, что я проверил свойство «Комната» до завершения конструктора. Когда я проверил результат после конструктора, все было в порядке! Спасибо!
Вы можете пометить ответ как разрешенный или ответить на свой собственный ответ, если нашли свое собственное решение. – Bart