2017-01-24 10 views
0

は、私はこのクラスUI要素にデータを置くことは可能ですか?例えば

public class Task : DependencyObject 
    { 
     [PrimaryKey, AutoIncrement] 

     public int Id { get; set; } 
     public string TaskName { get; set; } 
     public string Description { get; set; } 
     public DateTime BeginDate { get; set; } 
     public DateTime? Duration { get; set; } 
     public bool Done { get; set; } 

    } 

を持っていると私は、CheckBoxインスタンスに保存します。全体を保存することは可能ですか、intを置くことができる少なくともatributeですか?

チェックボックスをオンにすると、チェックされた要素がわかっている必要があります。私はUIを生成する方法

private void pageLoaded(object sender, RoutedEventArgs e) 
{ 
    var obj = App.Current as App; 

    var query = obj.Connection.Table<Task>(); 

    foreach (var task in query) 
    { 
     var stackLine = new StackPanel(); 
     stackLine.Orientation = Orientation.Horizontal; 
     TextBlock taskName = new TextBlock(); 
     taskName.Text = task.TaskName; 
     TextBlock taskDate = new TextBlock(); 
     taskDate.Text = " " + task.BeginDate.ToString(); 
     CheckBox taskDone = new CheckBox(); 
     taskDone.Checked += new RoutedEventHandler(taskChecked); 
     if (task.Done == true) 
      taskDone.IsChecked = true; 
     stackLine.Children.Add(taskDone); 
     stackLine.Children.Add(taskName); 
     stackLine.Children.Add(taskDate); 
     listView.Items.Add(stackLine); 
    } 
} 
+0

あなたはMVVMとXAMLについてまで読んでする必要があります。taskChecked方法で

CheckBox taskDone = new CheckBox(); taskDone.Checked += new RoutedEventHandler(taskChecked); // Here: taskDone.Tag = task; 

。また、WPFまたはUWPで作業しているかどうかを判断します。彼らは違う。最後に、あなたがここで達成しようとしていることを理解できません。 * "どの要素がチェックされたかを知る必要がある" * - どの要素が何ですか?どのチェックボックスがオンになっているかを知る必要があるということですか? 'Task'ごとに1つのチェックボックスがあり、あなたがチェックした' Task'を知りたいですか? –

+0

@EdPlunkett申し訳ありませんが、私はuwpアプリケーションをやっていますが、私はwpfがほぼ同じだと思いました。はい、タスクごとにチェックボックスがありますが、このチェックボックスにデータをバインドする方法がわかりません。 –

+0

UIでタスクのリストを作成するために使用しているXAMLを表示してください。 –

答えて

3

あなたはC#でUIを生成するあなたの時間を無駄にするべきではありません。 XAMLで記述し、ビューモデルを作成する必要があります。あなたは物事を厳しいやり方でやっています。長期的には、XAMLで作業する、いわゆる「正しい方法」を学ぶことをお勧めします。それはあなたが簡単に多くのクールなことを行うことができ、中程度から難しさの難しさでいくつかの驚くべきこと。

しかし、あなたはおそらく今日あなたのアプリケーション全体を書き直すつもりはないでしょうし、あなたはあなたが非常に簡単に持っているものを次のように悩ますことができます。

あなたがCheckBoxを作成すると、それに属しているTaskオブジェクトにそのTagプロパティを設定します。

private void taskChecked(object sender, RoutedEventArgs e) 
{ 
    var cb = (CheckBox)sender; 

    // Here we get the Task back from the Tag property. 
    // Tag is type Object, so we need to cast this one too. 
    var task = (Task)cb.Tag; 

    // Do stuff with the Task 
    task.Done = cb.IsChecked; 
} 
関連する問題