我关注XAML:
<ItemsControl x:Name="TextComboPairItemsControl" Grid.Row="1" Grid.ColumnSpan="2"
ItemsSource="{Binding Path=AllHeaders.Fields}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock x:Name="TextBlock1" Text="{Binding}"
Grid.Column="0" Margin ="2"/>
<ComboBox x:Name="ComboBox1" ItemsSource="{Binding ElementName=MainGrid, Path=DataContext.Tags}"
SelectedItem="{Binding ElementName=MainGrid, Path=DataContext.TextComboPairList.Combo}"
Grid.Column="1" Margin ="2" SelectedIndex="0" IsEditable="True"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
现在,在我的代码中,我希望能够读取用户在每个ComboBox中选择的内容。为此我创建了一个类:
public class TextComboPair
{
public string TextContent { get; set; }
public string ComboContent { get; set; }
}
每对TextBlock和ComboBox都有自己的上述类对象。 我还创建了一个列表来存储所有这些数据对:
public List<TextComboPair> TextComboPairList
{
get;
set;
}
它在我的DataContext中定义。
因此,例如,如果在屏幕上显示了三个TextBlock-ComboBox对的列表,并且用户将在每个ComboBox中选择他需要的内容,我希望上面的List填充了该数据。< / p>
正如您在XAML中看到的,我将Selected Item绑定到此List,但我一定做错了。
我可以解决这个问题吗?
答案 0 :(得分:0)
试试这个:
<ComboBox x:Name="ComboBox1" ItemsSource="{Binding Path=DataContext.Tags, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl }}}"
SelectedItem="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl }}, Path=DataContext.TextComboPairList.Combo}"
Grid.Column="1" Margin ="2" SelectedIndex="0" IsEditable="True"/>