/ / Jak usunąć element z DockPanel, aby zaktualizować jego widok - wpf, xaml, powiązanie danych, dockpanel

Jak usunąć element z DockPanel, aby zaktualizować jego widok - wpf, xaml, binding danych, dockpanel

    public void CreateLayout(Grid gridLayout)
{

//StackPanel
DwrapperForControls = new StackPanel();
DwrapperForControls.Width = 300;
DwrapperForControls.Margin = new Thickness(10, 0, 0, 0);

//TextBlock
DtblConnectedToIP = new TextBlock();
DtblConnectedToIP.Name = "NDtblConnectedToIP";
DtblConnectedToIP.Text = "ConnectedToIP";
//"tbxConnectedToIP"
//"tbxConversation"
//"tbxMassegeTyping"
//TextBox
DtbxConnectedToIP = new TextBox();
DtbxConnectedToIP.IsReadOnly = true;
DtbxConnectedToIP.Name = "NDtbxConnectedToIP";

// TextBox
DtbxConversation = new TextBox();
DtbxConversation.Name = "NDtbxConversation";
DtbxConversation.IsReadOnly = true;
DtbxConversation.Height = 190;
DtbxConversation.Background = Brushes.DarkCyan;

//TextBox
DtbxMassegeTypingD = new TextBox();
DtbxMassegeTypingD.Name = "NDtbxMassegeTypingD";

//Button
DbtnSend = new Button();
DbtnSend.Width = 100;
DbtnSend.Height = 20;
DbtnSend.Content = "Send";
DbtnSend.Click += new RoutedEventHandler(DbtnSend_Click);
DwrapperForControls.Children.Add(DtblConnectedToIP);
DwrapperForControls.Children.Add(DtbxConnectedToIP);
DwrapperForControls.Children.Add(DtbxConversation);
DwrapperForControls.Children.Add(DtbxMassegeTypingD);
DwrapperForControls.Children.Add(DbtnSend);
DwrapperForControls.Name = "Child" + numbering;
stackPanelWrapper.Children.Add(DwrapperForControls);
numbering++;

}

To jest obecnie Kod XAML, którego używam, ale zamiast używać Stackpanela jako rodzica, chcę DockPanel, ponieważ

Nie sądzę Panel aktualizuje swój interfejs użytkownika

<ScrollViewer  Grid.Row="0" Grid.Column="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<StackPanel x:Name="stackPanelWrapper" Orientation="Horizontal" Width="auto"> </StackPanel>
</ScrollViewer>

wprowadź opis obrazu tutaj

Odpowiedzi:

0 dla odpowiedzi № 1

Na obu StackPanel i DockPanel znajduje się właściwość Children, która jest Collection, w której można usunąć obiekty.

Właśnie przetestowałem funkcjonalność usuwania, działa dobrze zarówno z StackPanel jak i DockPanel.

<!-- you can change StackPanel into DockPanel, it still works fine -->
<StackPanel x:Name="panel1">
<Button Content="remove me " Click="Button_Click" DockPanel.Dock="Top" Height="50" />
<Button Content="remove me " Click="Button_Click" DockPanel.Dock="Left" Width="50" />
<Button Content="remove me " Click="Button_Click"  />
</StackPanel>

Oto układ kodu:

private void Button_Click(object sender, RoutedEventArgs e)
{
panel1.Children.Remove(sender as UIElement);
}

Masz tutaj działające demo: http://1drv.ms/1ZxRAPb

pozdrowienia