无法将样式应用于ResourceDictionary中定义的按钮控件

时间:2016-03-31 12:39:08

标签: wpf xaml

我是WPF技术的新手。目前,我愿意在WPF应用程序中应用母版页概念。

我已经使用了ResourceDictionary。我正在按照以下方式执行此操作时遇到问题。

我希望链接按钮列表显示在我的母版页上。

由于WPF中没有可用的直接链接按钮控件,我发现了一个用于创建链接按钮的样式脚本,如下所示。

<Style x:Key="Link" TargetType="Button">
                                                <Setter Property="VerticalAlignment" Value="Center"/>
                                                <Setter Property="HorizontalAlignment" Value="Center"/>
                                                <Setter Property="Cursor" Value="Hand"/>
                                                <Setter Property="Foreground" Value="Blue"/>
                                                <Setter Property="Background" Value="Transparent"/>
                                                <Setter Property="Template">
                                                    <Setter.Value>
                                                        <ControlTemplate TargetType="Button">
                                                            <TextBlock TextDecorations="Underline" 
                                                        Text="{TemplateBinding Content}"
                                                        Background="{TemplateBinding Background}"/>
                                                            <ControlTemplate.Triggers>
                                                                <Trigger Property="IsPressed" Value="True">
                                                                    <Setter Property="Foreground" Value="Red"/>
                                                                </Trigger>
                                                            </ControlTemplate.Triggers>
                                                        </ControlTemplate>
                                                    </Setter.Value>
                                                </Setter>
                                            </Style>

现在我在ResourceDictionary文件中使用了一个按钮控件,我正在尝试将此样式应用于按钮控件。它成功编译但运行异常消息。

以下是我的ResourceDictionary代码

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:MSRTC.Master">

    <Style TargetType="{x:Type local:Master}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:Master}">
                    <Grid Background="LightBlue">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="150"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="150"/>
                        </Grid.ColumnDefinitions>
                        <StackPanel Grid.Column="1">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="200"/>
                                    <ColumnDefinition Width="850"/>
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="120"/>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>
                                <Image Source="D:\Assignments\WPF\MSRTC\Developement\MSRTC\MSRTC\MSRTC\Images\Logo.png" Grid.Column="0" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                <Image Source="D:\Assignments\WPF\MSRTC\Developement\MSRTC\MSRTC\MSRTC\Images\HeaderImage1.jpg" Grid.Column="1" Grid.Row="0" Stretch="Fill"/>

                                <Grid Grid.Row="1" Grid.Column="0" Background="Silver" Height="400">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="40"/>
                                        <RowDefinition Height="40"/>
                                        <RowDefinition Height="40"/>
                                        <RowDefinition Height="40"/>
                                        <RowDefinition Height="40"/>
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>

                                    <TextBlock Text="Welcome" FontWeight="Bold" FontSize="15" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                    <Button Name="btnHome" Content="Home" Grid.Row="1" Style="{StaticResource Link}"></Button>

                                </Grid>

                                <StackPanel Margin="10" Grid.Column="1" Grid.Row="1">
                                <!--<StackPanel Margin="10" Grid.Column="0" Grid.Row="1">-->
                                    <ContentPresenter Content="{TemplateBinding Title}"/>
                                    <ContentPresenter Content="{TemplateBinding Abstract}"/>
                                    <ContentControl Content="{TemplateBinding Content}"/>
                                </StackPanel>

                            </Grid>
                            <!--<StackPanel Margin="10">
                                <ContentPresenter Content="{TemplateBinding Title}"/>
                                <ContentPresenter Content="{TemplateBinding Abstract}"/>
                                <ContentControl Content="{TemplateBinding Content}"/>
                            </StackPanel>-->
                        </StackPanel>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</ResourceDictionary>

任何人都可以告诉我我哪里出错了以及如何解决这个问题。

还有一点需要注意,我在App.xaml Application.Resource部分编写了链接按钮样式脚本。

提前致谢。

0 个答案:

没有答案