Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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
C# 如何在WPF的ListView中填充ComboBox_C#_Wpf_Listview_Combobox - Fatal编程技术网

C# 如何在WPF的ListView中填充ComboBox

C# 如何在WPF的ListView中填充ComboBox,c#,wpf,listview,combobox,C#,Wpf,Listview,Combobox,由于组合框位于单元格模板中,我无法访问它并设置其项目资源。 我在另一个类中有一个从MySql中提取数据并将其分配给类属性的方法。它在组合框外部列表视图中工作得非常好,只是在列表视图内部无法绑定它 WPF代码: <GridViewColumn Header="Distributor"> <GridViewColumn.CellTemplate> <DataTemplate> <ComboBox x:Name=

由于
组合框
位于
单元格模板
中,我无法访问它并设置其
项目资源
。 我在另一个类中有一个从MySql中提取数据并将其分配给类属性的方法。它在
组合框
外部
列表视图
中工作得非常好,只是在
列表视图
内部无法绑定它

WPF代码:

<GridViewColumn Header="Distributor">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <ComboBox x:Name="_distributor"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

您好,请尝试下一步:

Xaml代码

       <ListView ItemsSource="{Binding Users}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate DataType="someBindingExampleSoHelpAttempt:UserModel">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="100"></ColumnDefinition>
                                    <ColumnDefinition Width="200"></ColumnDefinition>
                                    <ColumnDefinition Width="50"></ColumnDefinition>
                                    <ColumnDefinition Width="50"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <TextBox Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  Text="{Binding Name, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"/>
                                <TextBox Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  Text="{Binding LastName, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"/>
                                <ComboBox Grid.Column="2"
                                          IsTextSearchEnabled="True"     
                                          IsTextSearchCaseSensitive="False"     
                                          StaysOpenOnEdit="True"    
                                          TextSearch.TextPath="DepartmentName"
                                          ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
                                    AncestorType={x:Type ListView}}, Path=DataContext.Departments}"    
                                          SelectedValue="{Binding Department}"     
                                          DisplayMemberPath="DepartmentName" 
                                          IsEditable="True"
                                          HorizontalAlignment="Stretch"     
                                          VerticalAlignment="Stretch"/>
                                <ComboBox Grid.Column="3"
                                          IsTextSearchEnabled="True"     
                                          IsTextSearchCaseSensitive="False"     
                                          StaysOpenOnEdit="True"
                                          IsEditable="True"
                                          TextSearch.TextPath="OfficeName"
                                          ItemsSource="{Binding OfficesCollection}"    
                                          SelectedValue="{Binding Office}"     
                                          DisplayMemberPath="OfficeName"      
                                          HorizontalAlignment="Stretch"     
                                          VerticalAlignment="Stretch"/>
                            </Grid>

                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>

查看模型和模型

public class MainViewModel:BaseObservableObject
{
    private DepartmentModel _selectedDepartment;
    private OfficeModel _selectedOffice;

    public MainViewModel()
    {
        Dal = new DataLayer();
        Users = new ObservableCollection<UserModel>();
        Departments = new ObservableCollection<DepartmentModel>(Dal.GetAllDepartments());
        InitUsersCollection();
    }

    private void InitUsersCollection()
    {
        if(Departments == null) return;
        Departments.ToList().ForEach(model =>
        {
            model.Offices.ToList().ForEach(officeModel =>
            {
                if (officeModel.Users == null) return;
                officeModel.Users.ToList().ForEach(userModel => Users.Add(userModel));
            });
        });
    }

    public ObservableCollection<UserModel> Users { get; set; }

    public ObservableCollection<DepartmentModel> Departments { get; set; }

    private DataLayer Dal { get; set; }

}

public class DataLayer
{
    public List<DepartmentModel> GetAllDepartments()
    {
        //pull and map your collection sources using your DB service
        //For example:
        return new List<DepartmentModel>
        {
            new DepartmentModel
            {
                DepartmentId = 1,
                DepartmentName = "A",
                Offices = new ObservableCollection<OfficeModel>
                {
                    new OfficeModel
                    {
                        DepartmentId = 1,
                        OfficeName = "AA",
                        Users = new ObservableCollection<UserModel>(new List<UserModel>
                        {
                            new UserModel {Name = "Avicenna", LastName = "Abu Ali Abdulloh Ibn-Sino"},
                            new UserModel {Name = "Omar", LastName = "Khayyam"},
                            new UserModel {Name = "RAMBAM", LastName = "Moshe ben Maimon"}
                        })
                    },
                    new OfficeModel 
                    {

                        DepartmentId = 1, 
                        OfficeName = "AB", 
                        Users = new ObservableCollection<UserModel>(new List<UserModel>
                        {
                            new UserModel {Name = "Leo", LastName = "Tolstoi"},
                            new UserModel {Name = "Anton", LastName = "Chekhov"},
                        })},
                }
            },
            new DepartmentModel
            {
                DepartmentId = 2,
                DepartmentName = "B",
                Offices = new ObservableCollection<OfficeModel>
                {
                    new OfficeModel
                    {
                        DepartmentId = 2, OfficeName = "BA",
                        Users = new ObservableCollection<UserModel>(new List<UserModel>
                        {
                            new UserModel {Name = "B", LastName = "O"},
                            new UserModel {Name = "B", LastName = "N"},
                        }),
                    },
                    new OfficeModel
                    {
                        DepartmentId = 2, OfficeName = "BB",
                        Users = new ObservableCollection<UserModel>(new List<UserModel>
                        {
                            new UserModel {Name = "John", LastName = "Walker"},
                            new UserModel {Name = "Gregory", LastName = "Rasputin"},
                        }),
                    },
                }
            },
            new DepartmentModel
            {
                DepartmentId = 3,
                DepartmentName = "C",
                Offices = new ObservableCollection<OfficeModel>
                {
                    new OfficeModel {DepartmentId = 3, OfficeName = "CA"},
                    new OfficeModel {DepartmentId = 3, OfficeName = "CB"},
                    new OfficeModel {DepartmentId = 3, OfficeName = "CC"}
                }
            }
        };
    }
}

public class OfficeModel:BaseObservableObject
{
    private int _departmentModel;
    private string _officeName;
    private DepartmentModel _department;
    private ObservableCollection<UserModel> _users;

    public int DepartmentId
    {
        get { return _departmentModel; }
        set
        {
            _departmentModel = value;
            OnPropertyChanged();
        }
    }

    public DepartmentModel Department
    {
        get { return _department; }
        set
        {
            _department = value;
            OnPropertyChanged();
        }
    }

    public string OfficeName
    {
        get { return _officeName; }
        set
        {
            _officeName = value;
            OnPropertyChanged();
        }
    }

    public ObservableCollection<UserModel> Users
    {
        get { return _users; }
        set
        {
            _users = value;
            OnPropertyChanged(()=>Users);
        }
    }
}

public class DepartmentModel:BaseObservableObject
{

    private string _departmentName;

    public string DepartmentName
    {
        get { return _departmentName; }
        set
        {
            _departmentName = value;
            OnPropertyChanged();
        }
    }

    public int DepartmentId { get; set; }

    public ObservableCollection<OfficeModel> Offices { get; set; }
}

public class UserModel:BaseObservableObject
{
    private string _name;
    private string _lastName;
    private DepartmentModel _department;
    private OfficeModel _office;

    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            OnPropertyChanged();
        }
    }

    public string LastName
    {
        get { return _lastName; }
        set
        {
            _lastName = value;
            OnPropertyChanged();
        }
    }

    public DepartmentModel Department
    {
        get { return _department; }
        set
        {
            _department = value;
            OnPropertyChanged();
            OnPropertyChanged(()=>OfficesCollection);
        }
    }

    public ObservableCollection<OfficeModel> OfficesCollection
    {
        get { return Department.Offices; }
    }

    public OfficeModel Office
    {
        get { return _office; }
        set
        {
            _office = value;
            OnPropertyChanged();
        }
    }
}
public类MainViewModel:baseObserveObject
{
私人部门模式(你选择的部门);;
私人办公室模型(你选择的办公室);;
公共主视图模型()
{
Dal=新数据层();
用户=新的ObservableCollection();
Departments=新的observeCollection(Dal.GetAllDepartments());
InitUsersCollection();
}
私有void InitUsersCollection()
{
如果(部门==null)返回;
Departments.ToList().ForEach(模型=>
{
model.Offices.ToList().ForEach(officeModel=>
{
if(officeModel.Users==null)返回;
officeModel.Users.ToList().ForEach(userModel=>Users.Add(userModel));
});
});
}
公共ObservableCollection用户{get;set;}
公共可观察收集部门{get;set;}
专用数据层Dal{get;set;}
}
公共类数据层
{
公共列表GetAllDepartments()
{
//使用DB服务提取并映射收集源
//例如:
返回新列表
{
新部门模式
{
部门ID=1,
DepartmentName=“A”,
办公室=新的可观察收集
{
新办公模式
{
部门ID=1,
OfficeName=“AA”,
用户=新的ObservableCollection(新列表
{
新用户模型{Name=“Avicenna”,LastName=“Abu Ali Abdulloh Ibn Sino”},
新用户模型{Name=“Omar”,LastName=“Khayyam”},
新用户模型{Name=“RAMBAM”,LastName=“Moshe ben Maimon”}
})
},
新办公模式
{
部门ID=1,
OfficeName=“AB”,
用户=新的ObservableCollection(新列表
{
新用户模型{Name=“Leo”,LastName=“Tolstoi”},
新用户模型{Name=“Anton”,LastName=“Chekhov”},
})},
}
},
新部门模式
{
部门ID=2,
DepartmentName=“B”,
办公室=新的可观察收集
{
新办公模式
{
DepartmentId=2,OfficeName=“BA”,
用户=新的ObservableCollection(新列表
{
新用户模型{Name=“B”,LastName=“O”},
新用户模型{Name=“B”,LastName=“N”},
}),
},
新办公模式
{
部门ID=2,OfficeName=“BB”,
用户=新的ObservableCollection(新列表
{
新用户模型{Name=“John”,LastName=“Walker”},
新用户模型{Name=“Gregory”,LastName=“Rasputin”},
}),
},
}
},
新部门模式
{
部门ID=3,
DepartmentName=“C”,
办公室=新的可观察收集
{
新的OfficeModel{DepartmentId=3,OfficeName=“CA”},
新的OfficeModel{DepartmentId=3,OfficeName=“CB”},
新的OfficeModel{DepartmentId=3,OfficeName=“CC”}
}
}
};
}
}
公共类OfficeModel:BaseObserveObject
{
私人int_部门模型;
私有字符串_officeName;
私人部门模型部门;
私有可观察收集用户;
公共int部门ID
{
获取{return\u departmentModel;}
设置
{
_部门模型=价值;
OnPropertyChanged();
}
}
公共部门模范部门
{
获取{return\u department;}
设置
{
_部门=价值;
OnPropertyChanged();
}
}
公共字符串官方名称
{
获取{return\u officeName;}
设置
{
_officeName=值;
OnPropertyChanged();
}
}
公共可观测收集用户
{
获取{return\u users;}
设置
{
_用户=价值;
OnPropertyChanged(()=>用户);
}
}
}
公共类DepartmentModel:BaseObserveObject
{
私人stri
    <!--This User Control Holds The ListView as one of it's Contents-->
    <UserControl.DataContext>
        <someBindingExampleSoHelpAttempt:MainViewModel/>
    </UserControl.DataContext>