DataGrid中的WPF ComboBox不显示选定的值

时间:2011-02-13 22:48:25

标签: .net wpf data-binding datagrid combobox

我有一个datagrid,其中包含一个模板列和一个combobox。我还有另一个combobox,它不在datagrid

<DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" 
        ItemsSource="{Binding Source={StaticResource asientoDetallesAsientosViewSource}}" 
        Name="detallesAsientosDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" >
<DataGrid.Columns>
    <DataGridTemplateColumn Header="Cuenta">
        <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <ComboBox Grid.Column="1" Grid.Row="0" 
                            Name="combo1"
                            ItemsSource="{Binding Source={StaticResource cuentaListaViewSource}}"
                            SelectedValuePath="Numero"
                            DisplayMemberPath="Nombre"
                            SelectedValue="{Binding ElementName=detallesAsientosDataGrid, Path=SelectedItem.Numero}">
                    <ComboBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel />
                        </ItemsPanelTemplate>
                    </ComboBox.ItemsPanel>
                </ComboBox>
            </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=Numero}" />
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<ComboBox Name="combo2"
            ItemsSource="{Binding Source={StaticResource cuentaListaViewSource}}"  
            SelectedValuePath="Numero"
            DisplayMemberPath="Nombre"
            SelectedValue="{Binding ElementName=detallesAsientosDataGrid,
                            Path=SelectedItem.Numero}"
            VerticalAlignment="Center" Width="120">
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel />
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>

现在奇怪的是,在这种情况下,combo1datagrid处于编辑模式时,正确显示所选行值但是如果我删除了combo2 combo1停止工作,不再显示所选行值,而是显示combobox列表的第一个值。

为什么会这样? combo2combobox完全相同combo1

1 个答案:

答案 0 :(得分:1)

它们都绑定到相同的SelectedValue。如果删除(编辑)SelectedValue,则所选值不再位于ItemsSource中。如果你选择(不编辑)下拉值,它是否有效?