J'ai cherché à travers de nombreuses fois, mais je n'ai pas vu cela avant. Question probablement très simple, mais je ne peux pas m'en passer la tête.XAML obtenir nouvelle largeur et hauteur pour la toile
A écrit un complément VSTO pour Excel qui dessine une grille dynamiquement. Puis lance une nouvelle fenêtre et remplace le contenu du canevas par la grille générée. Le problème est avec l'impression. Lorsque j'appelle la procédure d'impression, canvas.height et canvas.width retournent l'ancienne valeur avant de la remplacer par la grille.
Exemple:
string="<Grid Name=\"CanvasGrid\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">..Lots of stuff..</Grid>";
// Launch new window and replace the Canvas element
WpfUserControl newWindow = new WpfUserControl();
newWindow.Show();
//To test
MessageBox.Show(myCanvas.ActualWidth.ToString());
//return 894
Grid testGrid = myCanvas.FindName("CanvasGrid") as Grid;
MessageBox.Show("Grid " + testGrid.ActualWidth.ToString());
//return 234
StringReader stringReader = new StringReader(LssAllcChrt);
XmlReader xmlReader = XmlReader.Create(stringReader);
Canvas myCanvas = newWindow.FindName("GrphCnvs") as Canvas;
myCanvas.Children.Clear();
myCanvas.Children.Add((UIElement)XamlReader.Load(xmlReader));
//To test
MessageBox.Show(myCanvas.ActualWidth.ToString());
//return 894 but should be much larger the Grid spans all three of my screens
Grid testGrid = myCanvas.FindName("CanvasGrid") as Grid;
MessageBox.Show("Grid " + testGrid.ActualWidth.ToString());
//return 234 but should be much larger the Grid spans all three of my screens
//Run code from WpfUserControl.cs after it loads from button click
Grid testGrid = canvas.FindName("CanvasGrid") as Grid;
MessageBox.Show("Grid " + testGrid.ActualWidth.ToString());
//return 234 but should be much larger the Grid spans all three of my screens
Donc, fondamentalement, je n'ai aucun moyen de dire ce que ma nouvelle largeur et la hauteur sont.
En tant que conseil, vous pouvez formater un bloc code à l'aide du bouton 101010 dans l'éditeur. – itowlson
Est-ce que 'Grid' occupe tout le' Canvas'? Pouvez-vous obtenir une taille fiable de la «grille»? – Jay
La Grille initiale n'occupe pas la totalité du Canevas, mais la Grille générée peut ne pas occuper tout le Canevas. Intéressant comment lierais-je le Canvas à la dimension Grid? Actuellement, le Canvas se développe et se contracte avec la fenêtre. –