我有一个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>
现在奇怪的是,在这种情况下,combo1
内datagrid
处于编辑模式时,正确显示所选行值但是如果我删除了combo2
combo1
停止工作,不再显示所选行值,而是显示combobox
列表的第一个值。
为什么会这样? combo2
与combobox
完全相同combo1
。
答案 0 :(得分:1)
它们都绑定到相同的SelectedValue。如果删除(编辑)SelectedValue,则所选值不再位于ItemsSource中。如果你选择(不编辑)下拉值,它是否有效?