Silverlight DataGrid TemplateColumn添加ComboBox问题

时间:2010-07-28 10:55:39

标签: silverlight datagrid silverlight-3.0 combobox datatemplate

我遇到这个问题的麻烦。 我创建了一个DataGrid,它有DataTemplate Columns。这是XAML的那个

<data:DataGrid x:Name="PortsGrid" Height="124" Margin="23,0,17,2" VerticalAlignment="Bottom" ItemsSource="{Binding PortsGridData, Mode=TwoWay}" AutoGenerateColumns="False" SelectionMode="Single">
        <data:DataGrid.Columns>
            <data:DataGridTextColumn Header="Specific port/Range" CanUserResize="False" Width="130" Binding="{Binding Port}"/>
            <data:DataGridTemplateColumn Header="Timeout" CanUserResize="False" Width="130" >
                <data:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox x:Name="TimeoutComboBox" IsEditable="True" SelectedIndex="{Binding TimeoutIndex}">
                            <ComboBoxItem Content="First Value" Tag="-1"/>
                            <ComboBoxItem Content="Second Value" Tag="0"/>
                        </ComboBox>
                    </DataTemplate>
                </data:DataGridTemplateColumn.CellTemplate>
            </data:DataGridTemplateColumn>
            <data:DataGridTemplateColumn Header="Priority" CanUserResize="False" Width="120">
                <data:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox x:Name="PriorityComboBox" SelectedIndex="{Binding PriorityIndex}">
                            <ComboBoxItem Content="Low" Tag="0"/>
                            <ComboBoxItem Content="Prio1" Tag="1"/>
                            <ComboBoxItem Content="Prio2" Tag="2"/>
                            <ComboBoxItem Content="Prio3" Tag="3"/>
                            <ComboBoxItem Content="Prio4" Tag="4"/>
                        </ComboBox>
                    </DataTemplate>
                </data:DataGridTemplateColumn.CellTemplate>
            </data:DataGridTemplateColumn>
            <data:DataGridTemplateColumn Header="Compression" CanUserResize="False" Width="105">
                <data:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox x:Name="CompressionComboBox" SelectedIndex="{Binding CompressionIndex}">
                            <ComboBoxItem Content="On" Tag="1"/>
                            <ComboBoxItem Content="Off" Tag="0"/>
                        </ComboBox>
                    </DataTemplate>
                </data:DataGridTemplateColumn.CellTemplate>
            </data:DataGridTemplateColumn>
            <data:DataGridTemplateColumn Header="Protocol" CanUserResize="False" Width="100">
                <data:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox x:Name="ProtocolComboBox" SelectedIndex="{Binding ProtocolIndex}">
                            <ComboBoxItem Content="Proto1"/>
                            <ComboBoxItem Content="Proto2"/>
                        </ComboBox>
                    </DataTemplate>
                </data:DataGridTemplateColumn.CellTemplate>
            </data:DataGridTemplateColumn>
        </data:DataGrid.Columns>
    </data:DataGrid>

此数据网格与ObservableCollection绑定,如果我在此数据网格中添加一行,则在ObservableCollection中添加一个元素,并添加其默认值,即没有选择值。现在,如果我更改组合框选择然后删除此行,并再次添加此行,组合框将添加其先前的状态,而不是默认状态..为什么会发生这种情况..可能是DataGrid正在存储Combobox表示更好的性能,但如何清除这些值?

0 个答案:

没有答案