我将一个列表框绑定到一个包含两个字符串数组的对象。每个列表框项目都设置为由文本框和组合框组成的数据模板。第一个字符串数组绑定到列表,第二个字符串数组绑定到组合框。那么,至少这是我想要实现的。问题是我找不到绑定语法来将第二个数组设置为组合框。这里是我有什么:ListBox DataTemplate与两个列表绑定
第一件事是我的类与我的两个字符串数组。非常简单。请注意,字符串数组的内容就是为了简单起见。
public class JobAssignments
{
public JobAssignments()
{
m_people.Add("John");
m_people.Add("Bill");
m_people.Add("Frank");
m_people.Add("Steve");
m_jobs.Add("Architect");
m_jobs.Add("Teacher");
m_jobs.Add("Carpenter");
m_jobs.Add("Plumber");
}
private List<string> m_people = new List<string>();
public List<string> People { get { return m_people; } set { m_people = value; } }
private List<string> m_jobs = new List<string>();
public List<string> Jobs { get { return m_jobs; } set { m_jobs = value; } }
};
在代码中,我把这个类的一个实例,因为这ListBox的DataContext的:
<ListBox x:Name="listBox"
Grid.Row="0"
HorizontalContentAlignment="Stretch"
DataContext="{Binding}"
ItemsSource="{Binding People}"
ItemTemplate="{StaticResource JobAssignmentDataTemplate}">
</ListBox>
与数据模板,看起来像这样:
<DataTemplate x:Key="JobAssignmentDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding}"/>
<ComboBox Grid.Column="2"
SelectedIndex="0"
ItemsSource="{Binding Jobs ???? }"/>
</Grid>
</DataTemplate>
我通常走出我的实验是人的列表框,但每个列表项的组合框是空的。
我能得到它的工作,如果我使用
ItemsSource="{Binding ElementName=listBox, Path=DataContext.Jobs }"/>
,但我不希望使用的ElementName,因为它的硬编码阵列的源特定的列表框,我想避免。
试图像
ItemsSource="{Binding RelativeSource={RelativeSource Self}, Path=Parent.Jobs}"/>
似乎不工作,要么因为它是寻找网格内作业。
向正确的方向稍微推动会有很大的帮助。
谢谢!
不幸的是,我的项目中的作业列表并不是静态的,这本来不错。 – djcouchycouch 2009-07-23 16:41:31