我有一个列表框,至少需要一个ComboBox。我找不到将ComboBox放在我使用的ItemTemplate中的方法。
...
<DataTemplate x:Key="parts_template">
<StackPanel Orientation="Horizontal">
<TextBlock .../>
<ComboBox .../>
</StackPanel>
</DataTemplate>
...
<ListBox x:Name="lb_parts" ItemTemplate="{StaticResource parts_template}" .../>
...
如何将DataTemplate中的ComoBox绑定到后面代码中的ObservableCollection?
答案 0 :(得分:3)
您可以尝试的另一件事是订阅ComboBox上的Loaded事件。 然后,您可以将EventHandler中的ComboBox.ItemsSource设置为MyObservableCollection。
看看
XAML:
<DataTemplate x:Key="parts_template">
<StackPanel Orientation="Horizontal">
<TextBlock .../>
<ComboBox Loaded="ComboBox_OnLoaded">
<!-- ComboBox ItemTemplate -->
</ComboBox>
</StackPanel>
</DataTemplate>
C#代码背后:
private void ComboBox_OnLoaded(object sender, EventArgs e)
{
((ComboBox)sender).ItemsSource = MyObservableCollection;
}
答案 1 :(得分:0)
好的,以下是如何在后面的代码中向ListBox添加ComboBox。
创建一个ComboBox
ComboBox x = new ComboBox();
如果您有一个填充ComboBox的数据源,那么您可以绑定该
x.ItemsSource = e.Result;
如果您不想,并且想要手动将项目添加到ComboBox:
ComboBoxItem y = new ComboBoxItem();
将项目的内容设置为您希望在ComboBox中显示的内容
y.Content = "Hello";
现在剩下的就是将ComboBoxItem添加到ComboBox(仅当您手动创建Items时),然后将ComboBox添加到ListBox
x.Items.Add(y);
//testing is my ListBox
testing.Items.Add(x);
答案 2 :(得分:0)
您应该能够将数据上下文设置为List本身
lb_Parts.DataContext=myCollection;
然后你应该能够在模板中绑定它
<DataTemplate x:Key="parts_template">
<StackPanel Orientation="Horizontal">
<TextBlock .../>
<ComboBox ItemSource={Binding}/>
</StackPanel>
</DataTemplate>