2016-08-09 7 views
0

Ich habe den folgenden Code:Set Schriftgröße richtexblock in UWP dynamisch

<ScrollViewer x:Name="swipeBetweenPages" Grid.Row="1"> 
    <Pivot DataContext="{StaticResource ViewModel}" x:Name="pivot" Margin="0,-45,0,0" 
        HeaderTemplate="{StaticResource headerTest}" 
      ItemTemplate="{StaticResource pivotTemplate}" ItemsSource="{Binding Articles}" SelectionChanged="pivot_SelectionChanged"> 
    </Pivot> 
</ScrollViewer> 

<Page.Resources> 
    <ViewModels:ArticleViewModel x:Key="ViewModel" /> 
    <DataTemplate x:Key="headerTest"> 
    </DataTemplate> 
    <DataTemplate x:Key="pivotTemplate"> 
     <StackPanel Margin="-15 0 -15 0"> 
      <Grid> 
       <Grid.Background> 
        <ImageBrush AlignmentX="Center" AlignmentY="Center" ImageSource="Assets/PlaceHolder.jpg"></ImageBrush> 
       </Grid.Background> 
       <Image q42controls:ImageExtensions.CacheUri="{Binding ImageURL}" Tag="{Binding ImageURL}" Tapped="ImageView"></Image> 
      </Grid> 
      <StackPanel Background="White"> 
       <TextBlock x:Name="HeadLine" Text="{Binding HeadLine}" 
              Margin="10 5 0 -5" TextWrapping="Wrap" 
              FontSize="20" Foreground="Black" 
              FontFamily="{StaticResource HeadlineCommonFamiy}" 
              Pivot.SlideInAnimationGroup="GroupTwo" Height="63" 
              FontWeight="Bold" TextTrimming="CharacterEllipsis"/> 
       <TextBlock Text="{Binding Abstract}" TextWrapping="Wrap" FontSize="15" FontStyle="Italic" 
           Pivot.SlideInAnimationGroup="GroupTwo" Margin="10 5 0 10" 
             FontFamily="{StaticResource AbstractCommonFamily}"/>     
      </StackPanel> 
      <StackPanel x:Name="descriptionSP" Background="White"> 
      <RichTextBlock IsTextSelectionEnabled="False" x:Name="richTextBlock" 
          local:Properties.Html="{Binding ArticleDetail}" TextWrapping="Wrap" 
          Pivot.SlideInAnimationGroup="GroupTwo" Margin="10 5 0 10" 
            FontFamily="{StaticResource ContentControlThemeFontFamily}"> 
      </RichTextBlock> 
     </StackPanel> 
     </StackPanel> 
    </DataTemplate> 
</Page.Resources> 

Ich versuche, die Schriftgröße auf Rich-Text-Block im Backend dynamisch einzustellen.

Jetzt versuche ich, mit dem folgenden Code in C# Ende:

private T FindElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject 
{ 
    var count = VisualTreeHelper.GetChildrenCount(parentElement); 
    if (count == 0) return null; 

    for (int i = 0; i < count; i++) 
    { 
     var child = VisualTreeHelper.GetChild(parentElement, i); 
     if (child != null && child is T) 
      return (T)child; 
     else 
     { 
      var result = FindElementInVisualTree<T>(child); 
      if (result != null) 
       return result; 
     } 
    } 
    return null; 
}   

RichTextBlock richTextBlock = new RichTextBlock(); 
StackPanel rootStackPanel = new StackPanel(); 
StackPanel childStackPanel = new StackPanel(); 

PivotItem item = (sender as Pivot).ContainerFromItem((sender as Pivot).SelectedItem) as PivotItem; 
rootStackPanel = item.ContentTemplate.LoadContent() as StackPanel; 
childStackPanel = rootStackPanel.FindName("descriptionSP") as StackPanel; 
richTextBlock = rootStackPanel.FindName("richTextBlock") as RichTextBlock; 

Paragraph paragraph = new Paragraph(); 
Run run = new Run(); 
// Customize some properties on the RichTextBlock. 
richTextBlock.IsTextSelectionEnabled = true; 
richTextBlock.SelectionHighlightColor = new SolidColorBrush(Windows.UI.Colors.Pink); 
richTextBlock.Foreground = new SolidColorBrush(Windows.UI.Colors.Blue); 
richTextBlock.FontWeight = Windows.UI.Text.FontWeights.Light; 
richTextBlock.FontFamily = new FontFamily("Arial"); 
richTextBlock.FontStyle = Windows.UI.Text.FontStyle.Italic; 
richTextBlock.FontSize = 50; 
//run.Text = "This is some sample text to demonstrate some properties.";   
paragraph.Inlines.Add(run); 
richTextBlock.Blocks.Add(paragraph); 

// Add the RichTextBlock to the visual tree (assumes stackPanel is decalred in XAML). 
//childStackPanel.Children.Add(richTextBlock); 
//rootStackPanel.Children.Add(richTextBlock); 

Aber, es ist nicht die Schriftgröße auswirkt.

Bitte helfen Sie mir. Danke.

+0

Was möchten Sie genau archivieren? Nur um die FontSize des Rich-Text-Felds in der Datenvorlage zu setzen? –

+0

Ja, ich muss nur die Schriftgröße für den Rich-Text-Block festlegen. Dies liegt daran, dass ich eine Einstellungsseite habe, in der ich eine Option habe, um die Schriftgröße für den Rich-Text-Block zu erhöhen oder zu verringern, und dies sollte nur im Backend erfolgen. So versuche ich es auf diese Weise. –

Antwort

0

Sie können in Ihrem ViewModel eine Eigenschaft oder eine hinter einer Datei codieren und eine Datenbindung verwenden, um sie mit der FontSize-Eigenschaft zu verbinden.

private double _myFontSize;  
public double MyFontSize 
{ 
    get{ return _myFontSize; } 
    set{ _myFontSize = value; } 
} 

Jetzt in Ihrer Datenvorlage für die Schriftgröße der Rich-Text-Box,

FontSize="{Binding MyFontSize, ElementName=page/viewModel}" 

Und denken Sie daran 'INotifyPropertyChanged' verwenden, um die Benutzeroberfläche, wenn der Wert Ihrer Immobilie Änderungen zu informieren. Diese web site bietet eine Anleitung zur Implementierung 'INotifyPropertyChanged'

Verwandte Themen