我有这个XAML代码:
<Window x:Class="New_app_2.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window2" Height="400" Width="500">
<Grid>
<StackPanel Orientation="Horizontal">
<ItemsControl ItemsSource="{Binding TestList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ComboBox ItemsSource="{Binding Tags}" VerticalAlignment="Top">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</Grid>
</Window>
我将TextBlock绑定到属性TestList:
private List<string> _testList;
public List<string> TestList
{
get
{
return new List<string>() { "Test1", "Test2", "Test3", "Test4", "Test5" };
}
set
{
_testList = value;
}
}
和一个属性标签的ComboBox(看起来与TestList属性非常相似,但有不同的字符串)。
我的目标是以这样的形式显示:
Test1 [标签的组合框]
Test2 [标签的组合框]
Test3 [标签的组合框]
Test4 [标签的组合框]
Test5 [标签的组合框]
相反,我得到了:
Test1 [标签的组合框]
的Test2
Test3的
TEST4
TEST5
稍后,我还希望能够获取为每个TestList元素选择哪些选项的信息。
可能这很容易,但我刚开始学习WPF。
答案 0 :(得分:1)
您是不是只是将ComboBox
移到 ItemsControl.ItemTemplate
那么? (然后,您需要将TextBlock
和ComboBox
包装在另一个面板中(例如StackPanel
)。)
如果所有ComboBoxes
都应包含相同的项目,则需要更改绑定以访问外部DataContext
。
即
<ComboBox ItemsSource="{Binding DataContext.Tags,
RelativeSource={RelativeSource AncestorType=ItemsControl}}">