2011-07-26 5 views
0

버튼을 누르면 listview가 채워지지 않습니다. 누구든지 나를 도울 수 있습니까?
공공 ObservableCollection에의 CheckInCollectionObservableCollection을 사용하여 listview를 채울 때의 문제

public ObservableCollection<CheckInData> CheckInCollection 
    { 
     get { return _CheckInCollection; } 
    } 

    public class CheckInData 
    { 
     public string RoomNumber { get; set; } 
     public decimal Price { get; set; } 
     public string Currecny { get; set; } 
     public decimal Discount { get; set; } 
     public string CheckOut { get; set; } 
     public int TotalDay { get; set; } 
     public decimal TotalPrice { get; set; } 
     public int CheckOutYear { get; set; } 
     public int CheckOutMonth { get; set; } 
     public int CheckOutDay { get; set; } 
     public Boolean IncToday { get; set; } 
    } 
    private void btnAdd_Click(object sender, RoutedEventArgs e) 
    { 
     string _CheckOut = "" + datePicker1.SelectedDate.Value.Day.ToString() + "/" + datePicker1.SelectedDate.Value.Month.ToString() + "/" + datePicker1.SelectedDate.Value.Year.ToString() + ""; 
     int _TotalDays; 
     decimal _TotalPrice; 
     Boolean _IncToday; 

     if (cbIncToday.IsChecked == true) 
     { 
      _IncToday = true; 
      var checkIn = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); 
      var checkOut = new DateTime(datePicker1.SelectedDate.Value.Year, datePicker1.SelectedDate.Value.Month, datePicker1.SelectedDate.Value.Day + 1); 

      TimeSpan ts = checkOut - checkIn; 
      _TotalDays = Convert.ToInt32(ts.Days); 
      _TotalPrice = _TotalDays * Convert.ToDecimal(txtPrice.Text); 
     } 
     else 
     { 
      _IncToday = false; 
      var checkIn = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); 
      var checkOut = new DateTime(datePicker1.SelectedDate.Value.Year, datePicker1.SelectedDate.Value.Month, datePicker1.SelectedDate.Value.Day); 

      TimeSpan ts = checkOut - checkIn; 
      _TotalDays = Convert.ToInt32(ts.Days); 
      _TotalPrice = _TotalDays * Convert.ToDecimal(txtPrice.Text); 
     } 

     _CheckInCollection.Add(new CheckInData 
     { 
      RoomNumber = cbRooms.Text, 
      Price = Convert.ToDecimal(txtPrice.Text), 
      Currecny = cbCurreny.Text, 
      Discount = Convert.ToDecimal(txtDiscount.Text), 
      CheckOut = _CheckOut, 
      CheckOutYear = datePicker1.SelectedDate.Value.Year, 
      CheckOutMonth = datePicker1.SelectedDate.Value.Month, 
      CheckOutDay = datePicker1.SelectedDate.Value.Day, 
      IncToday = _IncToday, 
      TotalDay = _TotalDays, 
      TotalPrice = _TotalPrice 

     }); 
    } 

XAML :

Title="CheckIn" Height="473" Width="682" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" DataContext="{Binding RelativeSource={RelativeSource Self}}"> 
<ListView Margin="8,8,5,1.04" DisplayMemberPath="{Binding CheckInCollection}"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="Room Number" Width="85" DisplayMemberBinding="{Binding RoomNumber}"/> 
        <GridViewColumn Header="Price" Width="60" DisplayMemberBinding="{Binding Price}"/> 
        <GridViewColumn Header="Currecny" Width="70" DisplayMemberBinding="{Binding Currency}"/> 
        <GridViewColumn Header="Discount" Width="65" DisplayMemberBinding="{Binding Discount}"/> 
        <GridViewColumn Header="Check Out" Width="100" DisplayMemberBinding="{Binding CheckOut}"/> 
        <GridViewColumn Header="Total Days" Width="100" DisplayMemberBinding="{Binding TotalDays}"/> 
        <GridViewColumn Header="Total Price" Width="100" DisplayMemberBinding="{Binding TotalPrice}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 

답변

1

는 대신 DisplayMemberPath의, 당신의 컬렉션에 ItemsSource 속성을 바인딩해야 ListView에 요소에이

<ListView Margin="8,8,5,1.04" ItemsSource="{Binding Path=CheckInCollection UpdateSourceTrigger = PropertyChanged}"> 
+0

감사합니다. 나는이 허용 된 대답을 표시 할 것입니다. –

1

을 시도합니다.

관련 문제