如何绑定到DataTemplate中的ComboBox?

时间:2010-05-14 03:09:30

标签: wpf vb.net

我有一个列表框,它绑定到一个可观察的音频集合(自定义类)。 Audio类有两个属性,DisplayText(字符串)和一个名为TarpIds(Observable Collection of Integer)的属性。我需要允许用户为显示的每个列表项更改组合框中的TarpID并捕获选择更改。

我创建了一个DataTemplate,它从Audio对象设置DisplayText属性的样式,并添加一个ComboBox来显示此音频的可用TarpID(这些是动态的,每个音频都是唯一的)。 DisplayText运行良好,但我无法在ComboBox中显示TarpID。

这是我到目前为止所感谢的任何帮助。仅供参考我在运行时将ItemSource设置为将ListUploadAudio绑定到Observable音频集合。

<Border BorderBrush="Red" Background="WhiteSmoke" CornerRadius="8">
                <Border.Resources>
                    <DataTemplate x:Key="UploadLayout" DataType="Audio">
                        <StackPanel Orientation="Vertical">
                            <TextBlock Text="{Binding Path=DisplayText}" 
                        FontWeight="Bold" Foreground="Blue">
                            </TextBlock>                                
                                <ComboBox x:Name="ListBoxTarpIDs"
                                         ItemsSource="{Binding Path=TarpIds}">                                        
                                </ComboBox>                                                                              
                           </StackPanel>
                    </DataTemplate>

                </Border.Resources>
                    <ListBox x:Name="ListUploadAudio" BorderBrush="Transparent" 
                         Background="Transparent" Width="230" Margin="10" 
                         Height="200" IsSynchronizedWithCurrentItem="True" SelectionMode="Multiple"
                         ItemTemplate="{DynamicResource UploadLayout}">
                </ListBox>
            </Border>

1 个答案:

答案 0 :(得分:2)

您的ComboBox需要绑定SelectedValue以及ItemsSource

就您的ComboBox没有绑定其项目而言,您的代码看起来正确。我怀疑其中一个:

  • 拼写错误(例如TarpIds与TarpIDs)
  • 设置不正确(例如缺少吸气剂)
  • ListUploadAudio.ItemsSource未设置为预期值

如果这不起作用,我建议您发布代码,特别是TarpIds属性的定义以及设置ListUploadAudio.ItemsSource的位置

作为旁注:除非使用名称空间,否则在绑定中不需要Path =。