多个对象的数据绑定属性

时间:2009-11-12 14:23:34

标签: c# data-binding object

你怎么样?我有个问题。我想将多个对象绑定到单个文本框中。假设我有一个包含许多任务的列表。每个任务都包含一个标题。

public class Task
{
public string Title { get; set; }
[...]
}

现在我想在列表框中选择两个任务。如果两个任务的标题相同,我希望文本框显示标题。如果它们不同,则不应显示任何内容。

如果用户更改了值,则应将两个任务的标题更改为新值。

到目前为止,我创建了一个新属性'Title',它在XAML中绑定。有两个问题。

  1. 如果我设置了网格的DataContext,程序只会读取一次“标题”。如果将datacontext设置为null,然后再将其设置为Task类,则可以正常工作(虽然很丑陋)。

  2. 如果我更改标题,则不会立即在列表框中更改。只有当列表框再次读取任务列表时,它才会正确显示。

    public string Title
    {
        get
        {
            string title = Tasks[0].Title;
    
            for (int i = 1; i < Tasks.Count; i++)
            {
                if (title != Tasks[i].Title)
                    return "";
            }
    
            return title;
        }
        set
        {
            foreach (Task task in Tasks)
                task.Title = value;
        }
    }
    
  3. 感谢您的帮助

    问候 stfx

1 个答案:

答案 0 :(得分:0)

使用MultiValueConverter。它的目的是实现支持多个绑定的转换器(MultiBinding对象),因此您可以绑定到多个任务。