Здравствуйте. Есть список ListView. Нужно было сделать так, чтобы при клике по элементу в списке открывалось всплывающее окно с контролами для редактирования этого элемента. Воспользовавшись
постом notacatАвтор: notacat
Дата: 19.11.09
сделал. Получило следующее:
Список:
<ListView.View>
...
<GridViewColumn Header="*">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox Template="{StaticResource conditionSelectionTemplate}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
...
</ListView.View>
Шаблон:
<ControlTemplate x:Key="conditionSelectionTemplate"
TargetType="{x:Type ComboBox}">
<StackPanel>
<CheckBox x:Name="qwe"
IsChecked="{Binding Path=IsDropDownOpen,
RelativeSource={RelativeSource TemplatedParent}}">
<CheckBox.Template>
...
</CheckBox.Template>
</CheckBox>
<Popup Name="popup" StaysOpen="True"
PlacementTarget="{Binding ElementName=qwe}"
IsOpen="{Binding Path=IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}"
DataContext="{TemplateBinding DataContext}"
MaxHeight="200">
Большой и длинный код popop'a
</Popup>
</ControlTemplate>
Как видно из картинки, всплывающее окно получилось довольно массивным в плане количества контролов внутри него. Проблема в том, что это всплывающее окно создается для каждого элемента в списке, что приводит к ощутимым тормозам при создании списка, который формируется динамически.
Как можно сделать так чтобы использовалось одно и то же всплывающее окно для разных элементов списка?