很久沒有寫博客了。 這是放暑假中的第一篇博客,以後會多多更新!!! 這就是我寫的一個字體選擇器,界面如下: 本程式用到的技術比較簡單,僅僅是用了Font類的幾個方法和數據綁定而已。 首先建一個四行兩列的Grid,添加一個ComboBox,命名為fonts。然後在添加若幹個TextBlock和一個Te ...
很久沒有寫博客了。
這是放暑假中的第一篇博客,以後會多多更新!!!
這就是我寫的一個字體選擇器,界面如下:
本程式用到的技術比較簡單,僅僅是用了Font類的幾個方法和數據綁定而已。
首先建一個四行兩列的Grid,添加一個ComboBox,命名為fonts。然後在添加若幹個TextBlock和一個TextBox(用於顯示字體名稱),如上圖所示。
以下是完整的xaml:
<Window x:Class="WpfApplication7.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="字體選擇器" Height="350" Width="594" Loaded="MainWindow_Loaded_1"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="2*"></RowDefinition> <RowDefinition Height="2*"></RowDefinition> <RowDefinition Height="2*"></RowDefinition> <RowDefinition Height="4*"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <ComboBox HorizontalAlignment="Center" MinWidth="200" Name="fonts" SelectionChanged="fonts_SelectionChanged" Grid.ColumnSpan="2" MinHeight="30" Margin="20"></ComboBox> <TextBlock Grid.Row="1">中文預覽:</TextBlock> <TextBlock Grid.Row="2" Name="text" FontSize="30">你選擇的字體</TextBlock> <TextBlock Grid.Row="1" Grid.Column="2">英文預覽:</TextBlock> <TextBlock Grid.Row="2" Grid.Column="2" FontSize="30" FontFamily="{Binding Path=FontFamily,ElementName=text}">You Selected Font</TextBlock> <Border Grid.ColumnSpan="2" Grid.Row="3"> <DockPanel> <TextBlock DockPanel.Dock="Top">字體詳細信息:</TextBlock> <StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock>字體名稱:</TextBlock> <TextBox Text="{Binding ElementName=text,Path=FontFamily}" Name="fontname"></TextBox> </StackPanel> </StackPanel> <Button HorizontalAlignment="Center" VerticalAlignment="Bottom" DockPanel.Dock="Bottom" Click="Button_Click_1"> <Button.Style> <Style> <Style.Triggers> <Trigger Property="Button.IsMouseOver" Value="True"> <Setter Property="Button.Foreground" Value="Blue"></Setter> </Trigger> <Trigger Property="Button.IsMouseOver" Value="False"> <Setter Property="Button.Foreground" Value="Black"></Setter> </Trigger> </Style.Triggers> </Style> </Button.Style> <Button.Template> <ControlTemplate> <TextBlock > <Underline>關註我的新浪微博</Underline> </TextBlock> </ControlTemplate> </Button.Template> </Button> </DockPanel> </Border> </Grid> </Window>
其中用了元素綁定,如 FontFamily="{Binding Path=FontFamily,ElementName=text}">,ElementName代表要綁定的元素名稱(Name屬性),Path代表要綁定的屬性名稱。
這裡我們用Fonts.SystemFontFamilies集合獲取系統內安裝的字體,然後使用foreach迴圈添加字體到名稱到ComboBox的Items集合中。
視窗load事件代碼:
foreach (FontFamily font in Fonts.SystemFontFamilies) { fonts.Items.Add(font.Source); /* 何問起 hovertree.com */ }
運行一下,會發現ComboBox中顯示出所有字體的名稱,但美中不足的是不能在列表中顯示出字體的字形,我們可以用自定義控制項解決。
建一個WPF控制項(取名Items),裡面放一個TextBlock控制項,命名為text,然後在構造函數中鍵入以下代碼:
public Items(FontFamily font)
{
InitializeComponent();
text.FontFamily = font;
text.Text= font.Source;
}
其中增加了一個參數用以接受FontFamily對象,設置TextBlock的內容和FontFamily為傳遞來的參數。
代碼如下:
foreach (FontFamily font in Fonts.SystemFontFamilies) //遍歷字體集合中德字體 { /* 何問起 hovertree.com */ fonts.Items.Add(new Items(font));//將參數傳遞到自定義控制項 }
這樣就OK了。
推薦:http://www.cnblogs.com/roucheng/category/827769.html