绑定字体:
<Window.Resources>
<FontFamily x:Key="CustomFont">Calibri</FontFamily>
</Window.Resources>
<StackPanel Margin="10" DataContext="{x:Static SystemFonts.IconFontFamily}">
<TextBlock Margin="5" Text="{Binding Path=Source}"></TextBlock>
<TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=LineSpacing}"></TextBlock>
<TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=FamilyTypefaces[0].Style}"></TextBlock>
<TextBlock Margin="5" Text="{Binding Source={x:Static SystemFonts.IconFontFamily}, Path=FamilyTypefaces[0].Weight}"></TextBlock>
<TextBlock Margin="5" Text="{Binding Source={StaticResource CustomFont}, Path=Source}"></TextBlock>
</StackPanel>
元素之间绑定:
<StackPanel Margin="5">
<Slider Name="sliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10" TickFrequency="1" IsSnapToTickEnabled="True" TickPlacement="TopLeft"></Slider>
<TextBlock Margin="10" Name="lblSampleText"
FontSize="{Binding ElementName=sliderFontSize, Path=Value, Mode=TwoWay}"
Text="Simple Text">
</TextBlock>
<StackPanel Orientation="Horizontal" >
<Button Margin="5" Padding="3" Click="cmd_SetSmall">Set to Small</Button>
<Button Margin="5" Padding="3" Click="cmd_SetNormal">Set to Normal</Button>
<Button Margin="5" Padding="3" Click="cmd_SetLarge">Set to Large</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="5">
<TextBlock VerticalAlignment="Center" xml:space="preserve">Exact Size: </TextBlock>
<TextBox Name="txtBound" Text="{Binding ElementName=lblSampleText, Path=FontSize, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Delay=500}" Width="100"></TextBox>
</StackPanel>
<Button Margin="5" Padding="3" HorizontalAlignment="Left" Click="cmd_GetBoundObject">Get Bound Object</Button>
</StackPanel>
private void cmd_SetSmall(object sender, RoutedEventArgs e)
{
sliderFontSize.Value = 2;
}
private void cmd_SetNormal(object sender, RoutedEventArgs e)
{
sliderFontSize.Value = this.FontSize;
}
private void cmd_SetLarge(object sender, RoutedEventArgs e)
{
// Only works in two-way mode.
lblSampleText.FontSize = 30;
}
private void cmd_GetBoundObject(object sender, RoutedEventArgs e)
{
Binding binding = BindingOperations.GetBinding(txtBound, TextBox.TextProperty);
MessageBox.Show("Bound " + binding.Path.Path + " to source element " + binding.ElementName);
BindingExpression expression = BindingOperations.GetBindingExpression(txtBound, TextBox.TextProperty);
MessageBox.Show("Bound " + expression.ResolvedSourcePropertyName + " with data " + ((TextBlock)expression.ResolvedSource).FontSize);
}
字体选择器:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<ListBox Grid.Row="0" ItemsSource="{x:Static Fonts.SystemFontFamilies}" Margin="5" Name="lstFonts"/>
<Grid Grid.Row="1" Margin="5">
<TextBox
FontFamily="{Binding ElementName=lstFonts, Path=SelectedItem}"
TextAlignment="Center" TextWrapping="Wrap">
The quick brown fox jumps over the lazy dog
</TextBox>
</Grid>
</Grid>
多绑定:
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Slider Name="sliderFontSize" Margin="3" Minimum="1" Maximum="40" Value="10"></Slider>
<TextBox Name="txtContent" Margin="3" Grid.Row="2">Sample Content</TextBox>
<ListBox Margin="3" Grid.Row="3" Name="lstColors">
<ListBoxItem Tag="Blue">Blue</ListBoxItem>
<ListBoxItem Tag="DarkBlue">Dark Blue</ListBoxItem>
<ListBoxItem Tag="LightBlue">Light Blue</ListBoxItem>
</ListBox>
<TextBlock Margin="3" Name="lblSampleText"
FontSize="{Binding ElementName=sliderFontSize, Path=Value}" Grid.Row="4"
Text="{Binding ElementName=txtContent, Path=Text}"
Foreground="{Binding ElementName=lstColors, Path=SelectedItem.Tag}"
>
</TextBlock>
</Grid>