wpf Combobox Itemssource在Listbox数据模板中没有绑定

时间:2015-05-26 10:45:49

标签: wpf combobox listbox datatemplate itemssource

请帮助解决以下问题。 我在列表框项目datatemplate中有Combobox,这样我就可以加载多个组合框但是相同的项目源

<StackPanel>
  <ListBox Width="400" Name="lstFiles" ItemsSource="{Binding}">
    <ListBox.ItemTemplate>
      <DataTemplate>
        <Grid Name="dataGrid">
          <Grid.RowDefinitions>
            <RowDefinition/>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
          </Grid.ColumnDefinitions>
          <TextBox Name="dragFileName"
                   Margin="5,0,0,0"
                   Text="{Binding fileName, UpdateSourceTrigger=Default}" />
          <ComboBox Grid.Row="0"
                    Grid.Column="1"
                    Margin="5,0,0,0"
                    Name="cboDragDocType"
                    ItemsSource="{Binding dragDocType, UpdateSourceTrigger=LostFocus, Mode=TwoWay}"  
                    Text="{Binding dragDocTypeText}"
                    IsEditable="True"
                    IsReadOnly="True" />
          <Button Name="dragDelBtn"
                  Grid.Column="2"
                  Height="20">X</Button>
        </Grid>
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>
</StackPanel>

使用ObservableCollection属性在comboBox中加载数据。在Initialize方法中,我为循环方法做了多个项目。 问题场景:从下拉列表中选择项目 - &gt;然后从dropdown2中选择项目 - &gt;再次单击dropdown1,现在dropdown1 itemssource为空。

1 个答案:

答案 0 :(得分:0)

您没有绑定SelectedItemSelectedValue(或ComboBox)属性。因此,无法保存(或检索)该值。

您需要在类中添加一个属性作为DataContext来保存ComboBox的所选项,例如:

<ComboBox Grid.Row="0"
          ...
          SelectedItem="{Binding Path=SelectedDragDocType, UpdateSourceTrigger=LostFocus}" />

作为旁注,设置为ComboBox的{​​{1}}上的IsEditableIsReadOnly属性都非常严格。你确定这是预期的行为吗?