首页 文章

Windows 10开发:如何将两种不同的数据类型绑定到ListView?

提问于
浏览
0

所以,我试图将String类型的LinkedList绑定到ListView中复选框的Content属性 . 同时,我想将Boolean类型的LinkedList IsCompleted绑定到ListView中复选框的IsChecked属性 . 我可以做任何一个但不能两个都做 . 这是我的代码:XAML

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

我已经尝试不使用ItemsSource for ListView并依赖C#中的this.DataContext或myListView.DataContext以及内容的和IsChecked的 . 但没有ItemsSource就没有显示任何内容 . 我也尝试指定绑定路径无济于事 . 我很乐意感谢任何帮助 . 非常感谢 .

1 回答

  • 1

    根据您的代码,我们可以看到CheckBox是ListView的子代,如下所示:
    enter image description here

    所以这意味着一个ListViewItem只有一个CheckBox,这样我们就无法将LinkedList( IsCompleted )绑定到CheckBox,我们只能为每个CheckBox绑定一个值 .

    此外,LinkedList或其他集合只能用于ItemsControl:如ListView,ListBox,GridView等 .

    为了将两种不同的数据类型绑定到ListView,请尝试修改代码以使 Tasks and IsCompleted 使用 string/bool 数据类型而不是 LinkedList Collection,之后我们可以绑定包含Task对象的类对象的LinkedList集合 . IsCompleted到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;
        }
    

    }

    结果:

    enter image description here

    谢谢 .

相关问题