Silverlight DataGrid TemplateColumn добавление проблемы с ComboBox - PullRequest
1 голос
/ 28 июля 2010

У меня небольшие проблемы с этой проблемой.Я сделал DataGrid и у него есть столбцы DataTemplate.здесь 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 заявляет для лучшей производительности, но как очистить эти значения?

...