none
RenderTargetBitmap, Visual und VisualTreeHelper- Verhalten unerwartet RRS feed

  • Frage

  • Gestern hatte ich wieder einmal WPF Rätselstunde. Mal schauen, ob ihr mir helfen könnt:

    Einfaches WPF-Projekt, XAML wie folgt:

      <Grid>
        <Image Name="IMAGE" Stretch="None"/>
      </Grid>
    

    Im folgenden Code werden zwei Steuerelemente auf identische Weise erzeugt. Hierbei kann der Button (also das Visual davon) kann über ein Bitmap gerendert werden, die TextBox aber nicht.

        public Window1()
        {
          InitializeComponent();
    
          Button b = new Button { Width = 100, Height = 20, Content = "Click Me" };
          b.Arrange(new Rect(0, 0, 120, 50)); // needs to be arranged ...
          Visual Vb = b;
    
          TextBox t = new TextBox { Width = 100, Height = 20, Text = "Hello World" };
          t.Arrange(new Rect(0, 0, 120, 50));
          Visual Vt = t;
    
          // --- Frage : Warum funktioniert ...
          RenderTargetBitmap bmp = new RenderTargetBitmap((int)Width, (int)Height, SysDpi.X, SysDpi.Y, PixelFormats.Pbgra32);
          bmp.Render(Vb); // <- dieses ...
          //bmp.Render(Vt); // <- aber dieses nicht ?
          IMAGE.Source = bmp;
    
          // Symptom des Problems bereits hier:
          int Ib = VisualTreeHelper.GetChildrenCount(Vb); // == 1
          int Tb = VisualTreeHelper.GetChildrenCount(Vt); // == 0 ... hat keine Kinder ?
    
        }
    

    Mit Dank für Anwort

    _Rudolf

     

     

     

    Montag, 28. März 2011 10:51

Alle Antworten