我是WPF的新手,所以这可能比看起来更容易。我有一个DataTable对象,我将其设置为组合框的项目源。对于DataTable中的每一行,我想要一个ComboBoxItem。对于每个ComboBoxItem,我想为每个列名创建一个标签,并为该列的当前行中的相应值创建一个文本框。我尝试的任何东西似乎都没有用,但是我在XAML的数据模板中开枪了。
<Grid x:Name="LayoutRoot" Background="White" Height="107" Width="358">
<ComboBox Name="pCombo" ItemsSource="myTable">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel DataContext="{Binding pCombo.ItemsSource.Columns}">
<TextBlock Text="{Binding ColumnName}"></TextBlock>
</StackPanel>
<StackPanel DataContext="{Binding pCombo.ItemsSource.Rows}">
<TextBox Text="{Binding RowValue}"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
我知道我的所有绑定都是错误的我只是无法弄清楚应该在哪里。感谢任何帮助我的人。
答案 0 :(得分:0)
XAML:
<ListView ItemsSource="{Binding Path=Tbl}">
<ListView.ItemTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Path=Key}"></Label>
<Label Content="{Binding Path=Value}"></Label>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
代码背后:
private object tbl = new[]
{
new[] {
new KeyValuePair<string, string>("col1", "val1"), new KeyValuePair<string, string>("col2", "val1")
},
new[] {
new KeyValuePair<string, string>("col1", "val2"), new KeyValuePair<string, string>("col2", "val2")
},
new[] {
new KeyValuePair<string, string>("col1", "val3"), new KeyValuePair<string, string>("col2", "val3")
}
};
public object Tbl { get { return tbl; } set { tbl = value; } }
不要忘记设置DataContext(即在窗口的.ctor中),如下所示:
DataContext = this;
我希望你能理解这背后的想法!