2011-03-22 13 views

Respuesta

13

Conjunto Button.Content en lugar de utilizar Button.Children.Add

Como una explicación más larga:

  • Button es un control que "solamente tiene 1 hijo" - su Content.
  • Solo unos pocos controles (generalmente "Paneles") pueden contener una lista de cero o más Children - p. StackPanel, Cuadrícula, WrapPanel, lienzo, etc.

como su código ya muestra, se puede establecer la Content de un botón para ser un grupo especial - esto sería EHN permitirá a continuación, agregar varios controles secundarios. Sin embargo, realmente en su ejemplo, no es necesario tener el StackPanel ni la imagen. Parece que tu StackPanel solo está agregando Padding, y podrías agregar el Padding a la Imagen en lugar de al StackPanel si así lo deseas.

15
Image img = new Image(); 
    img.Source = new BitmapImage(new Uri("foo.png")); 

    StackPanel stackPnl = new StackPanel(); 
    stackPnl.Orientation = Orientation.Horizontal; 
    stackPnl.Margin = new Thickness(10); 
    stackPnl.Children.Add(img); 

    Button btn = new Button(); 
    btn.Content = stackPnl; 
1

uso como esto

<Window.Resources> 
    <ImageSource x:Key="LeftMenuBackgroundImage">index.jpg</ImageSource> 
    <ImageBrush x:Key="LeftMenuBackgroundImageBrush" 
    ImageSource="{DynamicResource LeftMenuBackgroundImage}"/> 
</Window.Resources> 

y en Codebehind

Button btn = new Button(); 
     btn.HorizontalContentAlignment = HorizontalAlignment.Stretch; 
     btn.VerticalContentAlignment = VerticalAlignment.Stretch; 
     StackPanel stk = new StackPanel(); 
     stk.Orientation = Orientation.Horizontal; 
     stk.Margin = new Thickness(10, 10, 10, 10); 
     stk.SetResourceReference(StackPanel.BackgroundProperty, "LeftMenuBackgroundImageBrush"); 
     btn.Content = stk; 
Cuestiones relacionadas