2010-12-30 30 views
1

データバインドを使用してリストボックスを更新しています。挿入しようとしている列の1つがチェックボックスです。このアップデートはスレッドプールによって処理されており、チェックボックスを除いてデータを正常に挿入できます。チェックボックスを作成すると、チェックボックス要素の代わりにxamlが表示されます。 すなわちC#スレッドプール作成UI要素

System.Windows.Controls.Checkbox内容:にisChecked:ここNotesReminderViewDetails

private struct NotesRemindersViewDetails 
{ 
    public string NoteReminderID { get; set; } 
    public string NoteReminderEnterDate { get; set; } 
    public string NoteReminderDueDate { get; set; } 
    public string NoteReminderConents { get; set; } 
    public CheckBox NoteReminderCompleted { get; set; } 
} 

の偽

定義は、私がリストビューを更新するために使用していたコードです。 NoteReminderTypeはすべてのメモ/リマインダー情報を含む構造体です。

NoteReminderType noteType = noteReminder.NoteReminderDetails; 

NotesRemindersViewDetails noteReminderDetails = new NotesRemindersViewDetails(); 
noteReminderDetails.NoteReminderID = noteType.UserFriendlyNoteReminderID.ToString(); 
noteReminderDetails.NoteReminderEnterDate = noteType.InsertionDate.ToShortDateString(); 
noteReminderDetails.NoteReminderDueDate = noteType.DueDate.ToShortDateString(); 
noteReminderDetails.NoteReminderConents = noteType.Description; 

listViewNotesReminders.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() 
{ 
    noteReminderDetails.NoteReminderCompleted = new CheckBox(); 

    listViewNotesReminders.Items.Add(noteReminderDetails); 
})); 

xamlフォームの代わりにチェックボックスを表示するには、スレッドプールスレッドを表示するにはどうすればよいですか?ここで

EDIT
は、リストビュー

<ListView.View> 
    <GridView> 
     <GridViewColumn Header="ID" Width="20" DisplayMemberBinding="{Binding Path=NoteReminderID}" /> 
     <GridViewColumn Header="Entered Date" Width="Auto" DisplayMemberBinding="{Binding Path=NoteReminderEnterDate}" /> 
     <GridViewColumn Header="Due Date" Width="75" DisplayMemberBinding="{Binding Path=NoteReminderDueDate}" /> 
     <GridViewColumn Header="Note Contents" Width="300" DisplayMemberBinding="{Binding Path=NoteReminderConents}" /> 
     <GridViewColumn Header="Completed" Width="Auto" DisplayMemberBinding="{Binding Path=NoteReminderCompleted}" /> 
    </GridView> 
</ListView.View> 
+0

"bool"フィールドの代わりにCheckBoxを使用する特別な理由はありますか? – ShahidAzim

+0

私は、ユーザーがノート/リマインダーのステータスを変更することができるように、チェックボックスをチェックして完了済みとマークします。 – Wesley

+1

'NotesRemindersViewDetails'にデータとプレゼンテーションをミックスしています。また、構造体ではなくクラスを使用する方がずっと一般的です。 –

答えて

5

よりむしろListView用データにUI要素(CheckBox)を置くためのXAMLコードであるあなたがレンダリングすることができますので、あなたは、テンプレートを定義する必要があります列をチェックボックスとして入力し、データとしてBooleanを使用します。データにCheckBoxを使用すると、UIレイヤーとデータレイヤーが混在しています。

更新:

ここでカスタム列のテンプレートを作成する方法で(テストされていない)の例です:

<ListView.View> 
    <GridView> 
     <GridViewColumn Header="ID" Width="20" 
         DisplayMemberBinding="{Binding Path=NoteReminderID}" /> 
     <GridViewColumn Header="Entered Date" Width="Auto" 
         DisplayMemberBinding="{Binding Path=NoteReminderEnterDate}" /> 
     <GridViewColumn Header="Due Date" Width="75" 
         DisplayMemberBinding="{Binding Path=NoteReminderDueDate}" /> 
     <GridViewColumn Header="Note Contents" Width="300" 
         DisplayMemberBinding="{Binding Path=NoteReminderConents}" /> 
     <GridViewColumn Header="Completed" Width="Auto"> 
      <GridViewColumn.CellTemplate> 
       <DataTemplate> 
        <CheckBox IsChecked="{Binding Path=NoteReminderCompleted}"/> 
       </DataTemplate> 
      </GridViewColumn.CellTemplate> 
     </GridViewColumn> 
    </GridView> 
</ListView.View> 
+0

どうすればこのようなことをすることができますか?私はまだWPFとその機能を学習しています。 WPFテンプレートのチュートリアルを教えてください。 – Wesley

0

あなたはNoteReminderCompletedの代わりに、チェックボックスのためのブール値フィールドを使用する必要があります。

関連する問題