将对象的列表转换为类列表

时间:2013-12-22 18:19:48

标签: c# wpf binding casting observablecollection

我从名为A的班级ObservableCollection开始(ObservableCollection<A>)。 此集合(让我们称之为listA)绑定到ListBox(我们称之为itemsList)。 这个ListBox有SelectionMode = Extended,所以我希望能够选择多个项目。 我正在尝试获取itemsList的所选项目。问题是SelectedItems返回对象列表,我不知道如何从A类“转换”它到ObservableCollection。 我需要把它放在xml中,例如,如果我在A类中绑定了一个TextBox字符串。 例如:

<TextBox Text={Binding ElementName=itemsList, Path=SelectedItems.stringA}"/>

当然我对DataContext

TextBox

2 个答案:

答案 0 :(得分:1)

只需使用此绑定:

<TextBox 
    x:Name="MyTextBox"
    TextChanged="TextBoxBase_OnTextChanged"
    Text="{Binding Path=SelectedItems[0].Content, 
    ElementName=MyListBox,
    NotifyOnSourceUpdated=True, 
    UpdateSourceTrigger=PropertyChanged,
    Mode=TwoWay}">
</TextBox>

您将需要TextBoxBase_OnTextChanged事件处理程序,它将如下所示:

private void TextBoxBase_OnTextChanged(object sender, TextChangedEventArgs e)
{
    MyListBox.SelectedItems.Cast<A>().ToList().ForEach(x => x.Content = MyTextBox.Text);
}

答案 1 :(得分:0)

如果要从第一个选定项目中显示StringA,可以尝试绑定到集合中的索引。像这样:

<TextBox Text={Binding ElementName=itemsList, Path=SelectedItems[0].stringA}"/>