The app is a WYSIWYG layout for arranging textblocks and barcodes and things to print on a label, so I want to avoid adding content that is not going to be printed to the xaml. Since the changing of the font size is initiated by the user, I can access the ActualHeight after that and update the rest of the UI manually.
It seems that the event only fires if it has in some way changed the layout of the container, but that is contrary to what the doco says. http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.sizechanged(VS.95).aspx "SizeChanged is raised whenever the size (either ActualHeight or ActualWidth) has changed on the object, and is raised after the Measure and Arrange passes are complete (for more information about these concepts, see Silverlight Layout System). If the position of the object within a parent container changes, but not the size, SizeChanged is not raised. " In this case the ActualHeight has changed, but it doesn't fire. I'll find a workaround for it, I was just wondering if anyone knew the reason. Regards, Colin Savage -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Scott Barnes Sent: Wednesday, 15 September 2010 4:10 PM To: ozSilverlight Subject: Re: Textblock SizeChanged Steve's correct, Canvas doesn't really care how wide/high its children are in regards to itself. Encapsulating the TextBlock inside a border and using that as your Source of Truth should get you the results you desire, but yeah you have a ghetto border now :) Not sure why FontSize doesn't trigger SizeChanged though? in theory the ActualWidth/ActualHeight should still trigger this event but given FontSize may act differently to other FrameworkElements given it uses glyphs etc. Regards, Scott Barnes http://www.riagenic.com On Wed, Sep 15, 2010 at 3:46 PM, Stephen Price <[email protected]> wrote: > Without trying anything in code, I'd be guessing that putting the > textblock onto/into the canvas makes it behave differently than when > its in the border. I've seen quite a lot of sizing things behave > differently depending upon the parent container. > > Have you tried it in a grid instead of a canvas? It might work > (guessing, have not tried it out) > > On Wed, Sep 15, 2010 at 11:23 AM, Colin Savage <[email protected]> > wrote: >> Before this list turns entirely into an ausdotnet trollfest, how about a >> Silverlight question? >> >> >> >> Does anyone know why a textblock is not firing SizeChanged event when the >> fontsize changes? >> >> >> >> Example: >> >> <Grid x:Name="LayoutRoot" Background="White"> >> >> <StackPanel> >> >> <Button Content="Resize" >> >> Name="button1" >> >> Click="button1_Click" /> >> >> <TextBlock Name="result" >> >> Text="Size goes here"/> >> >> <TextBlock Name="actual" >> >> Text="Actual goes here" /> >> >> </StackPanel> >> >> <Canvas Height="200" >> >> HorizontalAlignment="Left" >> >> Margin="57,92,0,0" >> >> Name="canvas1" >> >> VerticalAlignment="Top" >> >> Width="311"> >> >> <!--<Border Canvas.Top="10" >> >> Canvas.Left="10" >> >> BorderBrush="Green" BorderThickness="1">--> >> >> <TextBlock Canvas.Top="10" >> >> Canvas.Left="10" >> >> Name="textblock1" >> >> Width="180" >> >> Text="Some Text" /> >> >> <!--</Border>--> >> >> </Canvas> >> >> </Grid> >> >> >> >> public partial class MainPage : UserControl >> >> { >> >> public MainPage() >> >> { >> >> InitializeComponent(); >> >> >> >> textblock1.SizeChanged += textblock1_SizeChanged; >> >> } >> >> >> >> void textblock1_SizeChanged(object sender, SizeChangedEventArgs e) >> >> { >> >> result.Text = e.NewSize.ToString(); >> >> } >> >> >> >> private void button1_Click(object sender, RoutedEventArgs e) >> >> { >> >> textblock1.FontSize += 1; >> >> >> >> actual.Text = textblock1.ActualHeight.ToString(); >> >> } >> >> } >> >> >> >> >> >> Note that if I increase the fontsize, the ActualHeight changes, but the >> SizeChanged event doesn't. Uncomment the border around the textblock and it >> does start firing. >> >> >> >> Regards, >> >> Colin Savage >> >> _______________________________________________ >> ozsilverlight mailing list >> [email protected] >> http://prdlxvm0001.codify.net/mailman/listinfo/ozsilverlight >> >> > _______________________________________________ > ozsilverlight mailing list > [email protected] > http://prdlxvm0001.codify.net/mailman/listinfo/ozsilverlight > _______________________________________________ ozsilverlight mailing list [email protected] http://prdlxvm0001.codify.net/mailman/listinfo/ozsilverlight _______________________________________________ ozsilverlight mailing list [email protected] http://prdlxvm0001.codify.net/mailman/listinfo/ozsilverlight
