Создать новый UserControl во всплывающем окне каждый раз, когда всплывающие окна - PullRequest
2 голосов
/ 16 июня 2011

У меня есть usercontrol, у которого есть всплывающее окно, которое отображает другой usercontrol, когда пользователь выбирает элемент из списка. При инициализации родителя инициализируются все пользовательские элементы управления.

    <Popup x:Name="PopContactLogs" Width="670" StaysOpen="True" AllowsTransparency="True" PopupAnimation="Fade" PlacementTarget="{Binding ElementName=PageCustomerHome}" Placement="Center">
        <Border CornerRadius="5" BorderBrush="DimGray" BorderThickness="2" Background="White">
            <StackPanel>
                <DockPanel Width="1180" Background="Gray">
                    <TextBlock Text="Customer Contact Logs" FontWeight="Bold" HorizontalAlignment="Center" />
                    <Button Name="cmdContactLogsClose" Content="X" Width="20" Foreground="Gainsboro" DockPanel.Dock="Right" />
                </DockPanel>
                <l:cCustomerContactLogFull x:Name="cCCLF" />
            </StackPanel>
        </Border>
    </Popup>

Код:

Private Sub lstContactLogs_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles lstContactLogs.MouseDoubleClick
    cCCLF = New Tracks.cCustomerContactLogFull(CustomerID, sender.selecteditem)
    PopContactLogs.IsOpen = True
End Sub

Проблема в том, что данные в наблюдаемой коллекции никогда не меняются с первой записи, которую я просматриваю. Я также попробовал

Private Sub lstContactLogs_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles lstContactLogs.MouseDoubleClick
    cCCLF.CustomerID = CustomerID
    cCCLF.ContactLog = sender.selecteditem
    PopContactLogs.IsOpen = True
End Sub

и он просто сохраняет исходные данные там. Мне бы очень хотелось просто каждый раз заново его оживлять и каждый раз иметь новую веб-часть.

1 Ответ

0 голосов
/ 07 июля 2011

Измените ваш шаблон так, чтобы cCCLF не был его частью. Вместо этого замените его на . В вашем коде, если вы хотите создать новый элемент управления cCCLF, вызовите cCCLFGrid.Children.Clear, создайте новый cCCLF, а затем вызовите cCCLFGrid.Children.Add (cCCLF), который вы только что создали. Это гарантирует удаление старого и добавление нового cCCLF.

...