Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用WPF绑定在c#中附加到对象列表_C#_Wpf - Fatal编程技术网

如何使用WPF绑定在c#中附加到对象列表

如何使用WPF绑定在c#中附加到对象列表,c#,wpf,C#,Wpf,型号: private void AddOrRemoveFromMatch(object sender, RoutedEventArgs e) { newlist = new List<Team>(); foreach (var player in HomePlayersList) { if(player.IsActive) newlist.Add(player); } } WPF: C#:

型号:

private void AddOrRemoveFromMatch(object sender, RoutedEventArgs e)
{
    newlist = new List<Team>();

    foreach (var player in HomePlayersList)
    {      
        if(player.IsActive)
            newlist.Add(player);
    }
}
WPF:


C#:

private void add或removefrommatch(对象发送方,RoutedEventArgs e)
{
newlist=新列表();
foreach(主场球员列表中的var球员)
{      
如果(player.IsActive)
添加(玩家);
}
}
OnLoad我已使用item source将对象列表绑定到我的列表框中。当我选中复选框时,列表框项目中有一个复选框。如果我取消选中“如果从新列表中删除某个对象(如果该对象不存在)”,则我希望将该复选框附加到该对象的新列表中


是否有一种方法可以使用唯一值附加新对象或删除,而不是每次创建新列表,例如,如果必须按索引选择项目,我将使用列表框的索引。

您可以使用
ObservableCollection
而不是
list
。如果集合发生更改,它会通知视图。您需要知道绑定使用
INotifyPropertyChanged
INotifyCollectionChanged
接口来通知和更新视图。

您可以使用
observedcollection
而不是
List
。如果集合发生更改,它会通知视图。您需要知道的是,绑定使用
INotifyPropertyChanged
INotifyCollectionChanged
接口来通知和更新视图。

使用
observedcollection
而不是
列表

使用
observedcollection
而不是我添加的
列表InotifyProperty更改为@Connnell.O'Donnell和@ddarkidee。。。工作如期进行

型号:

private void AddOrRemoveFromMatch(object sender, RoutedEventArgs e)
{
    newlist = new List<Team>();

    foreach (var player in HomePlayersList)
    {      
        if(player.IsActive)
            newlist.Add(player);
    }
}

我添加了inotifyproperty,更改为@Connnell.O'Donnell和@ddarkidee。。。工作如期进行

型号:

private void AddOrRemoveFromMatch(object sender, RoutedEventArgs e)
{
    newlist = new List<Team>();

    foreach (var player in HomePlayersList)
    {      
        if(player.IsActive)
            newlist.Add(player);
    }
}

在那种情况下,你应该接受他们的一个答案。
public class Team : INotifyPropertyChanged
{
    public string KnownName { get; set; }     //player known name
    public string Number { get; set; }    
    public bool isActive;
    public bool IsActive
    {
        get { return IsActive; }
        set
        {
            if (value != isActive)
            {
                isActive = value;
                if(isActive)
                {
                    OnPropertyChanged("IsActive", true);
                }
                else
                {
                    OnPropertyChanged("IsActive", false);
                }

            }
        }
    }

}

protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
    PropertyChangedEventHandler handler = PropertyChanged;
    if (handler != null)
        handler(this, e);
}

protected void OnPropertyChanged(string propertyName, bool state)
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
    if(state)
    {
        WindowType1.HomeTeam.Add(this);
    }
    else
    {
        WindowType1.HomeTeam.Remove(WindowType1.HomeTeam.Where(i => i.Number == this.Number).Single());
    }
}

public event PropertyChangedEventHandler PropertyChanged;