使用 UWP 我想打印包含 TextBlock 的报告。根据首选项,我想更改 TextBlock FontSize、FontStyle 和 FontFamily,但 DependencyProperty 仅更改 FontSize 和 FontStyle,而 FontFamily 不会更改。请帮帮我。
<vm:MainViewModel x:Name="mainViewModel" />
<Paragraph>
<InlineUIContainer>
<ItemsControl ItemsSource="{Binding PrintArterialVelocities}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2"/>
<ColumnDefinition Width="175"/>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="173"/>
<ColumnDefinition Width="175"/>
<ColumnDefinition Width="80"/>
</Grid.ColumnDefinitions>
<Border BorderBrush="Black" BorderThickness="0,0,0,1" Grid.Column="1" Grid.ColumnSpan="2"/>
<Border BorderBrush="Black" BorderThickness="0,0,0,1" Grid.Column="4" Grid.ColumnSpan="2"/>
<TextBlock Grid.Column="1" local:VelocitiesText.Text="{Binding ArteryName}"/>
<TextBlock Grid.Column="2" local:VelocitiesText.Text="{Binding ArteryVelocity}"/>
<TextBlock Grid.Column="4" local:VelocitiesText.Text="{Binding ArteryName}"/>
<TextBlock Grid.Column="5" local:VelocitiesText.Text="{Binding ArteryVelocity}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</InlineUIContainer>
</Paragraph>
回调类
公共课 VelocitiesText
{
public static string GetText(DependencyObject obj)
{
return (string)obj.GetValue(TextBlock.TextProperty);
}
public static void SetText(DependencyObject obj, string value)
{
obj.SetValue(TextBlock.TextProperty, value);
}
public static readonly DependencyProperty TextProperty =
DependencyProperty.RegisterAttached("Text", typeof(string), typeof(VelocitiesText), new PropertyMetadata(string.Empty, callback));
public static void callback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var Txt = (TextBlock)d;
var InsertString = (string)e.NewValue;
Txt.Text = InsertString;
// Txt.FontFamily= new Windows.UI.Xaml.Media.FontFamily(TextCalls.SelectedFontFamilyName);
Txt.FontFamily= TextCalls.SelectedFontFamily;
Txt.FontSize = double.Parse(TextCalls.SelectedFontSize);
if (TextCalls.SelectedFontStyle == "Italic")
Txt.FontStyle = Windows.UI.Text.FontStyle.Italic;
}
}
建议检查
TextCalls.SelectedFontFamily
是否正确。您还可以设置固定值(如Txt.FontFamily = new FontFamily("Segoe UI"
);