none
Problema al ocultar/mostrar un StackPanel RRS feed

  • Pregunta

  • Buen dia gente!, estoy arranco a desarrollar en WPF y tengo un problema, mi idea es la siguiente: 

    Dentro de un texblock tener un menu contextual, del cual pueda mostrar u ocultar un stackpanel, hasta ahi todo normal. 

    El problema es que por ejemplo cuando quiero mostrar el stack, hago click en "mostrar" y para que se vea tengo que hacer foco en otra seccion de la pantalla como para que se actualice, no se si soy claro, de todas formas les adjunto un videito con la secuencia y les copio y pego el código del XAML y de C#  

    Aqui esta el video:VIDEO CON PROBLEMA

            <DataTemplate x:Key="TransitionTemplate">
                <go:LinkPanel  go:Part.SelectionElementName="Path" go:Part.Reshapable="True">
                    <go:Link.Route>
                        <go:Route Curve="Bezier" 
                        RelinkableFrom="True" RelinkableTo="True"
                        Curviness="{Binding Path=Data.Curviness}" />
                    </go:Link.Route>
                    <go:LinkShape x:Name="Path" StrokeThickness="2"
            			Stroke="{Binding Part.IsSelected, Converter={StaticResource theSelectedBrushConverter}}" />
                    <Path Fill="Black" go:LinkPanel.ToArrow="Standard" />
                    <go:NodePanel Sizing="Auto" go:LinkPanel.Offset="{Binding Path=Data.Offset, Mode=TwoWay}">
                        <Grid Name="grilla_Enlace" MouseRightButtonUp="grillaNodo_MouseRightButtonUp" MouseRightButtonDown="grillaNodo_MouseRightButtonDown">
                            <Grid.RowDefinitions>
                                <RowDefinition x:Name="FuentesIcono"/>
                                <RowDefinition x:Name="Icono"/>
                                <RowDefinition x:Name="TextoIcono"/>
                                <RowDefinition x:Name="LabelGrafico"/>
                                <RowDefinition x:Name="FuentesTexto"/>
                            </Grid.RowDefinitions>
                            <TextBlock Grid.Row="0" />
                            <TextBlock Grid.Row="1" />
                            <Rectangle Grid.Row="2">
                                <Shape.Fill>
                                    <RadialGradientBrush>
                                        <GradientStop Offset="0.5" Color="White" />
                                        <GradientStop Offset="1" Color="Transparent" />
                                    </RadialGradientBrush>
                                </Shape.Fill>
                            </Rectangle>
                            <TextBlock 
                                     Name="TextoNodos_Enlace"  Grid.Row="2"  
                                     Text="{Binding Data.Text, Mode=TwoWay}" 
                                     Foreground="{Binding Color, ElementName=colorPicker_Enlace, Mode=TwoWay, Converter= {StaticResource converterColor}}" 
                                     FontSize="{Binding Value, ElementName=Tamanio_Enlace, Mode=TwoWay}" 
                                     FontFamily="{Binding SelectedItem.Tag, ElementName=Fuente_Enlace, Mode=TwoWay}"  
                                     go:Part.TextEditable="True" >
                            </TextBlock>
                            <StackPanel Name="StackFuentes_Enlace" HorizontalAlignment="Center" Orientation="Horizontal" Grid.Row="4" Visibility="Collapsed">
                                <inputToolkit:NumericUpDown Minimum="12" Height="25" FontSize="11" Name="Tamanio_Enlace" HorizontalAlignment="Center"/>
    
                                <local:ColorPicker Height="23" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="colorPicker_Enlace" Width="50" Color="Black" />
                            </StackPanel>
    
                        </Grid>
                    </go:NodePanel>
                </go:LinkPanel>
            </DataTemplate>   

            private void grillaNodo_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
            {
                e.Handled = true;
                grid = sender as Grid;
                NodePanel nodelPanel = grid.Parent as NodePanel;
                UIElement uiElement = nodelPanel.Parent as UIElement;
                if (uiElement.ToString() == "Northwoods.GoXam.LinkPanel")
                {
                    enlaceSeleccionado = uiElement as LinkPanel;
                }
    
                DependencyObject child_4 = VisualTreeHelper.GetChild(grid, 4);
                Panel stackpanel = child_4 as Panel;
                
                if (stackpanel.Visibility == System.Windows.Visibility.Collapsed)
                {
                    urlImagenIconoEstilo = "";
                }
                else
                {
                    urlImagenIconoEstilo = "/PrototipoSilverlight;component/Resources/Images/Icons/check.png";
    
                }
            }
    
            private void grillaNodo_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
            {
                cMenu = new ContextMenu();
                menuItem = new MenuItem();
                menuItem.Header = "Estilo";
    
                menuItem.Icon = new System.Windows.Controls.Image
                {
                    Source = new BitmapImage(new Uri(urlImagenIconoEstilo, UriKind.Relative))
                };
    
                cMenu.Items.Add(menuItem);
                menuItem.Click += new RoutedEventHandler(menuItem_Click);
                cMenu.IsOpen = true;
                Point posMouse = e.GetPosition(this);
                cMenu.HorizontalOffset = posMouse.X;
                cMenu.VerticalOffset = posMouse.Y;
            }
    
            private void menuItem_Click(object sender, RoutedEventArgs e)
            {
                MenuItem mnu = sender as MenuItem;
                DependencyObject child_0 = VisualTreeHelper.GetChild(grid, 0);
                Panel stackpanel_Icono = child_0 as Panel;
                DependencyObject child_1 = VisualTreeHelper.GetChild(grid, 1);
                TextBlock textIcono = child_1 as TextBlock;
                DependencyObject child_4 = VisualTreeHelper.GetChild(grid, 4);
                Panel stackpanel = child_4 as Panel;
    
                if (stackpanel.Visibility == System.Windows.Visibility.Collapsed)
                {
                    stackpanel.Visibility = System.Windows.Visibility.Visible;
                    if (textIcono.Text != "")
                    {
                        stackpanel_Icono.Visibility = System.Windows.Visibility.Visible;
                    }
    
                    urlImagenIconoEstilo = "/PrototipoSilverlight;component/Resources/Images/Icons/check.png";
    
                    if (enlaceSeleccionado != null)
                    {
                        enlaceSeleccionado.UpdateLayout();
                        enlaceSeleccionado.CaptureMouse();
                        this.myDiagram.UpdateLayout();
                        this.myDiagram.Focus();
                        this.myDiagram.UpdateLayout();
                        stackpanel.UpdateLayout();
    
                    }
                }
                else
                {
                    stackpanel.Visibility = System.Windows.Visibility.Collapsed;
                    if (stackpanel_Icono != null)
                    {
                        stackpanel_Icono.Visibility = System.Windows.Visibility.Collapsed;
                    }
                    urlImagenIconoEstilo = "";
                }
            }



    • Editado Sebistico lunes, 26 de enero de 2015 16:30
    lunes, 26 de enero de 2015 16:30