2009-12-18 7 views
3

Outlook에서 UI가 느슨하게 모델링되는 WPF 앱을 시작하려고합니다. Outlook 2010 베타에서 Blue 색 구성표를 에뮬레이션하고 싶습니다. WPF 버튼을 스타일로 지정하여 Outlook 2010의 작업 버튼처럼 보이게하는 자습서 나 요리법을 본 사람이 있습니까? 그것들은 Outlook 2010 기본 창의 왼쪽 아래 구석에있는 것들입니다. 감사합니다Office 2010 모양 및 느낌?

+1

스크린 샷을 공유해주세요. – Anvaka

답변

3

다음은 Expression Blend에서 만든 Outlook 2010 작업 단추에 대한 매우 기본적인 템플릿입니다. 템플릿을 창 리소스로 분리했습니다. 그러나 이미지와 텍스트는 마크 업에 하드 코딩됩니다. 이 템플릿을 사용하려면 선언 한 각 단추에 해당 단추에 대한 별도의 컨트롤 템플릿으로 통합하거나 바인딩 할 수있는 적절한 속성으로 사용자 지정 컨트롤을 만들어야합니다.

트리거를 만들지 않았습니다. Outlook 2010 단추를 에뮬레이션하려면 기본 상태는 경계선이 없어야합니다. 테두리 및 유리 효과는 마우스를 올려 놓거나 마우스를 놓는 등의 경우에 나타납니다. 그럼에도 불구하고 템플릿은 Outlook 2010 모양을 얻는 방법을 보여줍니다.

새 WPF 프로젝트를 만들고 Window1 마크 업을 아래의 마크 업으로 바꾸면 체크 아웃 할 수 있습니다. 리본 모양을 위해 또한

을 내가 사용하는 것이 좋습니다 느낌 : 그냥 Outlook 2010의 작업 버튼 스타일보다 훨씬 더 많은 기능을 제공합니다 NavigationPane (는 CodePlex)를 사용하는 것이 좋습니다

<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> 
0

당신은 표현식 혼합 3 시도해야합니다 (무료 평가판이 있습니다). 버튼 템플리트를 편집하여 매우 쉽게 스타일을 만들 수 있습니다. 단추는 그라디언트, 아이콘, 테두리 및 텍스트 만있는 것처럼 나에게 보인다.

+0

그것은 실제로 내가하고있는 일입니다. Blend를 사용하여 UI를 만듭니다. 나는 버튼을 설정하는 방법을 찾기를 원했기 때문에 Blend에서 제대로 돌아가는 것을 피할 수있었습니다. –

+0

버튼은 실제로 그보다 조금 더 복잡하지만 Blend에서 복제하는 것은 꽤 쉬웠습니다. 그것은 바깥 쪽과 안쪽의 테두리, '빛나는'효과, '빛'효과를 가지고 있습니다. 구조적으로 Vista 유리 단추와 매우 비슷합니다. 위의 마크 업을 게시했습니다. http://blogs.msdn.com/mgrayson/archive/2007/02/16/creating-a-glass-button-the-complete-tutorial.aspx에서 이러한 종류의 버튼에 대한 아주 좋은 자습서가 있습니다. –

2

Here's a ready-made paid product solution 도움이 될만한 해결책은 솔루션이 무료/오픈 소스 여야합니까? 이 제품은 무료 평가판입니다.

+0

감사합니다.하지만 WPF에서 이러한 제품을 사용하지 마십시오. 필자의 경우 앱에 다른 종속성을 추가하는 대신 Expression Blend에서 무언가를 채우는 것이 실제로 쉽습니다. –

+0

개발자를위한 $ 264는 꽤 기능적인 툴바를 사용하기에는 너무 많지 않습니다. 두 시간 만에 도구 모음을 만들 수는 없으 리라 생각합니다. – Chris

+2

불꽃 전쟁을 시작하지 않으려 고합니다, Chris,하지만 가능합니다. 정말 개인적인 취향에 달려 있습니다. 제 3 자 컨트롤에 대한 종속성을 최소화하려고합니다. Blend와 꽤 잘 맞습니다. 그러나 다른 사람들이 다르게 느끼고 제 3 자 컨트롤을 사용하는 것을 선호 할 수도 있음을 알고 있습니다. –

관련 문제