WPF绑定到不同类型的列表

9 浏览
0 Comments

WPF绑定到不同类型的列表

我遇到了一个与WPF数据绑定相关的有趣挑战。

我有一个表单,我想展示几个不同的选项。我使用单选按钮,显示这四个选项非常好:

未选择|无协议|共同监护|独立监护

如果选择了独立监护,我有一个包含父母列表的组合框,用户可以选择父母。这也很好运行。

现在,我想改变一下,使得“独立监护”单选按钮不显示,而是显示父母的单选按钮列表,这样我就有了如下内容:

未选择|无协议|共同监护|鲍勃·史密斯|简·多

我很难弄清楚如何实现这个。有人有任何示例吗?

谢谢!

0
0 Comments

问题出现的原因是需要在WPF中将不同类型的列表进行绑定。解决方法有两种:

第一种方法是创建一个包含所有可能选择项的集合,然后将该集合绑定到ListBox。集合中的选项包括:Not Selected、No Agreement、Joint Custody、Bob Smith和Jane Doe。

第二种方法是创建一个MultiValueConverter,它接收(Not Selected、No Agreement、Joint Custody)和父级名称作为参数,并返回一个合并的集合。然后在xaml中放置一个不显示UI的ListBox,并将该集合绑定到ListBox。

以下是具体的代码示例:


    
        
            
        
    

public class SelectionConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        List combinedList = new List();
        // 获取选项集合
        List options = values[0] as List;
        // 获取父级名称
        string parentName = values[1] as string;
        // 将选项集合和父级名称合并成一个集合
        foreach (string option in options)
        {
            combinedList.Add(option);
            combinedList.Add(parentName);
        }
        return combinedList;
    }
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}


    


    
        
            
                
                    
                
            
        
    

其中,Selections是一个ObservableCollection>,包含了不同类型的列表。使用MultiValueConverter将每个列表的选项与父级名称合并后,将结果绑定到ListBox上。最终,ListBox会显示出合并后的列表。

0