私はちょうどデータバインディングのグリップに苦しんでいます。オブジェクトをさらにObservableCollection内のネストされたプロパティへのバインドに苦労しています。つまり、ListViewのDataTemplateではDay.DayDate以下のプロパティ。私は私のメインウィンドウがしたいネストされたオブジェクトのバインディングパス
private void InitMonth(Month calendarMonth)
{
// create a Day Object for each day of month, create a gig for each booking on that day (done in LoadDay)
int daysInMonth = DateTime.DaysInMonth(calendarMonth.StartDate.Year, calendarMonth.StartDate.Month);
Day dc;
for (int day_cnt = 0; day_cnt < daysInMonth; day_cnt++)
{
dc = new Day();
dc.DayDate = calendarMonth.StartDate.AddDays(day_cnt);
calendarMonth.Day.Add(dc);
}
}
:
その日記アプリ&これは(簡単にそれを維持するために編集した)、その構造です:
public class Month : INotifyPropertyChanged
{
public DateTime StartDate { get; set; }
public ObservableCollection<Day> Days { get; set; }
}
public class Day : INotifyPropertyChanged
{
public DateTime DayDate { get; set; }
public ObservableCollection<Gig> Gigs { get; set; }
}
public class Gig : INotifyPropertyChanged
{
// Properties of a gig
}
私が最初にこのような数ヶ月の日数を移入
- 月リストビュー(すべての日数を表示)
- 日のListView(選択した日ギグを示す)
- コンテンツコントロール(選択ギグギグの性質を示す)
Imはパート1に引っかかって、私のXAMLは次のようになります。TextBlock内
<StackPanel>
<TextBlock Text="{Binding Path=StartDate, StringFormat={}{0:MMMM}}"/>// Month Heading
<ListView Name="lv_month"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource dayItem}">// Each Day in Month
</ListView>
</StackPanel>
<DataTemplate x:Key="dayItem">
<StackPanel>
<TextBlock Text="{Binding Path=Day.DayDate, StringFormat={}{0:dd ddd}}" />
</StackPanel>
</DataTemplate>
、月へのバインドStartDateは正常に動作します。次に、下にリストされているMonths Day Objects DayDate(最大31日、つまり01土〜31 Mon)をすべて表示します。
それはDay.DayDateを表示していません!どのように私はそれにバインドするのですか?
あなたは現時点で 'Path = Day.DayDate'を見ることができますが、間違った角度から近づいてきていると私は考えています。
すべてのヘルプは大幅に月のテンプレートのリストビューのあなたのItemsSourceは日間にバインドする必要が
素晴らしい!それで、ありがとうございます。{Binding Days}は{Binding Path = Days}に相当します。バインドしたい月オブジェクトのオブジェクトは、今すぐ取得します。 –