2012-06-19 3 views
0

내부에 Gridview 및 콤보 박스와 관련된 몇 가지 문제가 있습니다.Gridview 안에 Combobox 채우기

<ListView Height="139" HorizontalAlignment="Left" Margin="10,158,0,0" Name="lvAppointment" VerticalAlignment="Top" Width="250" MinWidth="350"> 
<ListView.View> 
    <GridView> 
     <GridViewColumn Header="Appointment" Width="120"> 
      <GridViewColumn.CellTemplate> 
       <DataTemplate> 
        <DatePicker SelectedDate="{Binding Path=Appointment}"/> 
       </DataTemplate> 
      </GridViewColumn.CellTemplate> 
     </GridViewColumn> 
     <GridViewColumn Header="Type" Width="170"> 
      <GridViewColumn.CellTemplate> 
       <DataTemplate> 
        <ComboBox ???/> 
       </DataTemplate> 
      </GridViewColumn.CellTemplate> 
     </GridViewColumn> 
     <GridViewColumn Header="Done" Width="50"> 
      <GridViewColumn.CellTemplate> 
       <DataTemplate> 
        <CheckBox IsChecked="{Binding Path=Done}" IsThreeState="False"/> 
       </DataTemplate> 
      </GridViewColumn.CellTemplate> 
     </GridViewColumn> 
    </GridView> 
</ListView.View> 

나는 다음과 같은 코드

using (SqlCeCommand sqlCeAppointment = new SqlCeCommand("SELECT appid,appointment,done,apptype.type FROM appointment INNER JOIN apptype ON appointment.refatid = apptype.atid WHERE refeventid = @eventid;", sqlCeConn)) 
    { 
     sqlCeAppointment.Parameters.AddWithValue("@eventid", ((cListEventItem)lvEvent.SelectedItems[0]).id); 
     using (SqlCeDataReader sqlCeAppointmentReader = sqlCeAppointment.ExecuteReader()) 
     { 
      lvAppointment.Items.Clear(); 

      while (sqlCeAppointmentReader.Read()) 
      { 
       lvAppointment.Items.Add(new cListAppointmentItem { id = sqlCeAppointmentReader.GetGuid(sqlCeTerminReader.GetOrdinal("appid")), Appointment = sqlCeAppointmentReader.GetDateTime(sqlCeTerminReader.GetOrdinal("appointment")), Type = sqlCeAppointmentReader.GetString(sqlCeTerminReader.GetOrdinal("type")), Done = sqlCeAppointmentReader.GetByte(sqlCeTerminReader.GetOrdinal("done")) }); 
      } 
     } 
    } 

내가 할 수와 C#을 통해 SQL CE 데이터베이스에서 목록을 popluating 해요 : 여기

내 ListView 컨트롤에 대한 코드입니다 명부를 잘 자르십시오. 하지만 사용자가 약속의 적절한 유형 (이벤트에 연결된 약속 목록)을 선택할 수 있도록 "유형"이 콤보 상자가되기를 원합니다. 이 콤보 상자는 SQL ce 데이터베이스 (apptype)의 테이블 안에있는 데이터로 채워야합니다. 이 테이블은 정적이 아니므로 사용자는이 목록에서 항목을 추가 및 삭제할 수 있습니다.

Google에서 발견 한 몇 가지 방법을 시도했지만 실패했습니다. 나는 이것이 어떻게 작동하는지/작동해야하는지 이해하는 데 문제가 있다고 생각한다.

나는 누군가가

답변

0

내가 MainViewModel에 약속-유형의 목록을 얻는 건의 할 것입니다. 그런 다음 목록에 ComboBoxItemsSource 바인딩과 바인딩 나 :(사전에

감사합니다 도움이 될 수 있습니다 희망 AppointmentItem 유형 SelectedItem.

<UserControl x:Name="TheUserControl"> 
    <ListView> 
     <GridView> 
      <GridViewColumn Header="Type" Width="170"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding ElementName=TheUserControl, Path=AppointmentTypes}" 
            SelectedItem="{Binding Path=Type}"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView> 
</UserControl> 
0

당신은 형 ObservableCollection에의 속성을 정의하여 그것을 할 수 있습니다. 를 컬렉션의 데이터 유형이 문자열 인 경우

<ComboBox VerticalAlignment="Top" HorizontalAlignment="Left" ItemsSource="{Binding Path=Types}" SelectedItem="{Binding MainViewModel.Type,Mode=TwoWay}" SelectedValue="{Binding SelectedValue}" Width="300" ></ComboBox> 
: 당신이로 결합 할 수 있습니다 XAML에서

public ObservableCollection<string> Types 
     { 
      get 
      { 
       ObservableCollection<string> _types = new ObservableCollection<string>(); 
       _types.Add("value1"); 
       _types.Add("value2"); 
       _types.Add("value3"); 
       return _types; 
      } 

     } 

: 당신은로 정의 할 수 있습니다

관련 문제