2016-03-27 8 views
0

したがって、ListViewのチェックボックスのContentプロパティに、文字列型のTasksのLinkedListをバインドしようとしています。同時に、ListViewのチェックボックスのIsCheckedプロパティに、Boolean型のLinkedList IsCompletedをバインドします。私はどちらか一方を行うことができますが両方を行うことはできません。ここ は私のコードは次のとおりです。 XAMLWindows 10の開発:2つの異なるデータ型をListViewにバインドする方法は?

<ListView x:Name="myListView" ItemsSource="{Binding Tasks}"> 
      <ListView.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <CheckBox x:Name="myCheckBox" IsChecked="{Binding IsCompleted}" Content="{Binding}" /> 
         </StackPanel> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
     </ListView> 

C#

public sealed partial class AddPage : Page 
{ 
private Projects project = new Projects(); 
this.DataContext = project; 
} 

データモデル:

public class Projects 
{ 
public LinkedList<string> Tasks { get; set; } 
public LinkedList<bool> IsCompleted { get; set; } 
} 

私はListViewコントロールのためのItemsSourceを使用していない試み、this.DataContextに依存していますかC#のmyListView.DataContextと、コンテンツの{Binding Tasks}、IsCheckedの{Binding IsCompleted}。しかし、ItemsSourceなしでは何も表示されません。また、バインディングパスを無駄に指定しようとしました。私は喜んでどんな助けにも感謝します。どうもありがとうございます。

答えて

1

あなたのコードに基づいて、我々は以下のように、そのチェックボックスがListViewコントロールの子で見ることができます: enter image description here

だから、1 ListViewItemには一つだけのCheckBoxを持っていることを意味します、このように我々が結合できませんLinkedList(IsCompleted)をCheckBoxにバインドすると、すべてのCheckBoxに対して1つの値しかバインドできません。

さらに、LinkedListなどのコレクションは、ListView、ListBox、GridViewなどのItemsControlにのみ使用できます。

タスクをできるようにあなたのコードを変更しようとしてください、リストビューに2つの異なるデータ型をバインドするためには、私たちの後に、ではなくのLinkedListコレクションの文字列/ブールデータ型を使用して完了するTasksおよびIsCompletedのクラスオブジェクトを含むLinkedListコレクションをListViewにバインドできます。

XAMLコード:

<ListView x:Name="myListView" ItemsSource="{Binding NewProject}"> 
    <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Vertical"> 
        <CheckBox x:Name="myCheckBox" IsChecked="{Binding IsCompleted}" Content="{Binding Tasks}" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 

CSコード:

public class Projects 
{ 
    public string Tasks { get; set; } 
    public bool IsCompleted { get; set; } 
} 

public sealed partial class MainPage : Page 
{ 
    public LinkedList<Projects> NewProject { get; set; } 
    public MainPage() 
    { 
     this.InitializeComponent(); 
     NewProject = new LinkedList<Projects>(); 
     NewProject.AddLast(new Projects() {Tasks="Task1",IsCompleted=true}); 
     NewProject.AddLast(new Projects() { Tasks = "Task2", IsCompleted = false }); 
     NewProject.AddLast(new Projects() { Tasks = "Task3", IsCompleted = true }); 
     this.DataContext = this; 
    } 

}

は、詳細については、次のコードをチェックしてくださいSULT:

enter image description here

感謝。

+0

ありがとうございました。しかし、私のProjectsクラスには、文字列Titleなどの他のプロパティも含まれています。私が達成したいのは、ユーザーがメインページのプロジェクトタイトル(タイトル付きデータバインディング)をタップし、その特定のプロジェクトに関する情報を引き出して別のページに表示することです。しかし、プロジェクトクラスの1つのインスタンスにアイテムのコレクションであるタスクを保存して表示できるようにしたいと考えています。どのように私はそれを行うことができますか? – pomeloyou

+0

こんにちは、ありがとう、私は自分の問題を解決しました。 MSDNでソリューションを適切に検索しなかったのは間違いです。私はhttps://msdn.microsoft.com/en-us/windows/uwp/data-binding/how-to-bind-to-hierarchical-data-and-create-a-master-detailsで働いていたソリューションを見つけました-view – pomeloyou

関連する問題