[WPF] Как назначит один Popup на все элементы в ListView
От: danilanv  
Дата: 23.12.10 10:33
Оценка:
Здравствуйте. Есть список 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>


Как видно из картинки, всплывающее окно получилось довольно массивным в плане количества контролов внутри него. Проблема в том, что это всплывающее окно создается для каждого элемента в списке, что приводит к ощутимым тормозам при создании списка, который формируется динамически.
Как можно сделать так чтобы использовалось одно и то же всплывающее окно для разных элементов списка?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.