代码之家  ›  专栏  ›  技术社区  ›  David Veeneman

Office 2010外观和感觉?

  •  3
  • David Veeneman  · 技术社区  · 15 年前

    我正着手开发一个WPF应用程序,它的用户界面将在Outlook上进行松散的建模。我想在Outlook2010测试版中模拟蓝色方案。是否有人看过任何教程或食谱,描述如何设置WPF按钮的样式,使其看起来像Outlook 2010的任务按钮?这些是Outlook2010主窗口左下角的。谢谢

    4 回复  |  直到 12 年前
        1
  •  3
  •   David Veeneman    13 年前

    这是在ExpressionBlend中创建的Outlook2010任务按钮的一个非常基本的模板。我将模板作为窗口资源分隔开。但是请注意,图像和文本是硬编码到标记中的。要使用此模板,您需要将其作为该按钮的单独控件模板合并到您声明的每个按钮中,或者需要创建一个具有可绑定的适当属性的自定义控件。

    还要注意,我没有创建触发器。要模拟Outlook2010按钮,默认状态应该是无边界的——对于鼠标悬停、鼠标按下等,边框和玻璃效果应该出现。尽管如此,该模板显示了如何获得Outlook 2010的外观。

    您可以通过创建新的WPF项目并用下面的标记替换Window1标记来签出该按钮。

    <Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Class="Outlook_2010_Task_Button.MainWindow"
        x:Name="Window"
        Title="MainWindow"
        Width="640" Height="480" Background="#FFB7C9E0">
        <Window.Resources>
            <ControlTemplate x:Key="TaskButtonTemplate" TargetType="{x:Type RadioButton}">
                <Border x:Name="OuterBorder" Width="150" Height="28" BorderBrush="#FF59697F" BorderThickness="0.75" Background="#FFB0C8E2" Opacity="0.85" SnapsToDevicePixels="False">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="3" Opacity="0.1"/>
                    </Border.Effect>
                    <Border x:Name="InnerBorder" BorderBrush="White" BorderThickness="0.75" Background="{x:Null}" Opacity="0.75" SnapsToDevicePixels="False">
                        <Grid>
                            <Border x:Name="Glow" Margin="0.999,0,-0.999,0" Grid.Row="0" Grid.RowSpan="2" BorderBrush="Black" BorderThickness="0">
                                <Border.Background>
                                    <RadialGradientBrush Center="0.494,0.98" GradientOrigin="0.494,0.98" RadiusX="0.56" RadiusY="1.018">
                                        <GradientStop Color="#CCFFFFFF"/>
                                        <GradientStop Offset="1"/>
                                    </RadialGradientBrush>
                                </Border.Background>
                            </Border>
                            <Border x:Name="Shine" Margin="0" BorderBrush="Black" BorderThickness="0" Grid.RowSpan="2">
                                <Border.Background>
                                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                        <GradientStop Color="#87FFFFFF" Offset="0"/>
                                        <GradientStop Offset="0.319"/>
                                    </LinearGradientBrush>
                                </Border.Background>
                            </Border>
                            <StackPanel HorizontalAlignment="Left" Margin="0" Grid.RowSpan="2" Orientation="Horizontal">
                                <Image Height="24" HorizontalAlignment="Left" Margin="4,0,0,0" Source="calendar.png"/>
                                <TextBlock Text="Calendar" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe UI" FontWeight="Bold" Margin="9,0,0,0" Foreground="#FF001955" />
                            </StackPanel>
                        </Grid>
                    </Border>
                </Border>
            </ControlTemplate>
        </Window.Resources>
    
        <Grid x:Name="LayoutRoot">
            <RadioButton HorizontalAlignment="Center" VerticalAlignment="Center" Content="RadioButton" Template="{DynamicResource TaskButtonTemplate}"/>
        </Grid>
    </Window>
    
        2
  •  2
  •   sventechie    15 年前

    Here's a ready-made paid product solution 可能会有帮助…解决方案是否需要是免费的/开源的?这个有免费试用期。

        3
  •  1
  •   Qorbani    12 年前

    我建议使用NavigationPane(codeplex),它将提供比Outlook 2010任务按钮样式更多的功能:

    另外,对于丝带外观和感觉,我建议使用fluent:

        4
  •  0
  •   DaMacc    15 年前

    你应该试试“混合表达3”(有免费试用)。您可以通过编辑按钮模板非常容易地创建样式。在我看来,这个按钮只有一个渐变、一个图标、一个边框和文本。