0

グリッドビューとその中のコンボボックスの操作にいくつか問題があります。

私の ListView コントロールのコードは次のとおりです。

<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>

次のコードを使用して、C#を介してsql ceデータベースからリストを作成しています

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")) });
            }
        }
    }

リストに問題なく入力できます。しかし、「タイプ」をコンボボックスにして、ユーザーが適切なタイプの予定 (イベントに接続された予定のリスト) を選択できるようにしたいと考えています。このコンボボックスには、sql ce データベース (apptype) のテーブル内にあるデータを入力する必要があります。このテーブルは静的ではありません。ユーザーはこのリストからアイテムを追加および削除できます。

Googleで見つけたいくつかの方法を試しましたが、失敗しました。これがどのように機能するか/機能する必要があるかを理解するのに問題があると思います。

誰かが私を助けてくれることを願っています:(

前もって感謝します

4

2 に答える 2

0

MainViewModel で予定の種類のリストを取得することをお勧めします。次に、ItemsSourceComboBoxをそのリストにバインドし、SelectedItemを AppointmentItem タイプにバインドします。

<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>
于 2012-06-19T09:21:22.417 に答える