2010-07-28 4 views
1

내 컴퓨터에서 Windows XP를 실행 중이고 다른 컴퓨터에서도 Windows XP를 실행 중입니다. 내 WPF 응용 프로그램에서 다른 컴퓨터에서 다르게 표시되는 WPF

, 나는 등 내 컴퓨터에서

,이 발생하는 동작은, 클릭, 내 버튼의 스타일을 롤오버 할 때이 강조되지 않은 것처럼 표시 변경했습니다. 다른 Windows XP 시스템에서는 단추를 롤오버하거나 클릭하여 몇 가지 개요를 볼 수 있습니다.

왜 그런지에 대한 아이디어가 있습니까?

편집 여기

도 또한 버튼 자체

 <Button Click="Next_Click" Width="100" VerticalAlignment="Center" BorderThickness="0" BorderBrush="Black" Background="Black" IsTabStop="False" DockPanel.Dock="Right" HorizontalAlignment="Left" Height="154" Name="NextOffers"> 
      <Image Source="Images/offer_right_arrow.jpg" Width="100" Height="154" MaxWidth="100" MaxHeight="154" HorizontalAlignment="Left" VerticalAlignment="Top" MinWidth="100" MinHeight="154" ></Image> 
     </Button> 

이 스타일이다.

<Style TargetType="{x:Type ListBoxItem}" x:Key="ListBoxItemStyle"> 
    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBox_MouseLeftButtonDown"></EventSetter> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListBoxItem"> 
       <Border Name="Border" Padding="0,0,2,0" SnapsToDevicePixels="true"> 
        <ContentPresenter /> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsSelected" Value="true"> 
         <Setter TargetName="Border" Property="Background" Value="Black"></Setter> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

분명히이 버튼을 위해 만들어진 템플릿이 없습니다.

내 ResourceDictionaries를 코드 뒤에 동적으로로드하고 있습니다.

+0

두 컴퓨터 모두 동일한 Windows 테마가 적용되어 있습니까? – AndrewS

+0

아니요, 그렇지 않습니다. 내 작업 컴퓨터의 테마는 AD의 그룹 정책 (부)에 의해 제어되고 다른 컴퓨터는 다른 회사 사무실의 그룹 정책에 의해 제어됩니다. – TheGeekYouNeed

+1

당신은 더 나은 요소에 대한 사용자 정의 스타일을 적용합니다. 컨트롤이 시스템의 기본 스타일을 얻는 것처럼 보이므로 다른 테마와 다르게 보입니다. –

답변

2

버튼에 맞춤 컨트롤 템플릿이 필요한 것 같습니다. 대부분의 WPF 컨트롤에 대한 기본 컨트롤 템플릿은 선택된 Windows 테마에 따라 달라 지므로 Windows 클래식 테마, Aero, Royale 또는 그 밖의 다른 테마에 상관없이 버튼이 테마를 따릅니다. 사용자가 선택한 OS 또는 테마에 관계없이 정확하게 동일한을 보길 원한다면 사용자 정의 컨트롤 템플릿을 사용하여 많은 두통을 줄일 수 있습니다.

Google 각 테마에 대한 제어 템플릿 소스 (XAML)를 제공하는 앱의 "템플릿보기". 이것은 맞춤 템플릿을 만드는 좋은 출발점입니다.

1

표시되는 문제는 기본값 인 ButtonChrome 일 가능성이 큽니다. 모든 종류의 스타일링을 적용 할 수 있지만, Chrome을 그대로두면 Windows 테마가 추악한 머리를 뒤덮을 것입니다.

ControlTemplate 자체를 다시 만들어야합니다.

+0

컨트롤 템플릿을 사용하는 경우 템플릿에서 클릭 이벤트를 명시 적으로 정의해야합니까? – TheGeekYouNeed

+0

아니요; OS/테마 별 스타일을 표시하지 않도록 단추를 다시 만들었으므로 클릭 이벤트를 설정하지 않아도됩니다. WPF 컨트롤은 "보이지 않습니다"하지만 각기 다른 동작을하기 때문에 우리가하는 일련의 컨트롤이 있습니다 * 비디오를 표시하기 위해 단추를 다시 만들 수 있습니다. 버튼의 동작을 원했습니다. – Jay

관련 문제