WPF по-разному отображается на разных компьютерах - PullRequest
1 голос
/ 28 июля 2010

На моем компьютере установлена ​​Windows XP, а на другом компьютере также установлена ​​Windows XP.

В моем приложении WPF я изменил стили своих кнопок, чтобы они выглядели так, как будто они не подсвечиваются при наведении курсора, нажатии и т. Д.

На моем компьютере это поведение, которое происходит. В другой системе Windows XP я вижу некоторые из кнопок, когда я на них переворачиваю или нажимаю.

Есть идеи, почему это происходит?

EDIT

Вот сама кнопка

        <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 динамически в коде позади.

Ответы [ 2 ]

2 голосов
/ 28 июля 2010

Похоже, вам нужен собственный шаблон управления для ваших кнопок. Шаблон элемента управления по умолчанию для большинства элементов управления WPF зависит от выбранной темы Windows, поэтому кнопка следует за темой, независимо от того, используете ли вы тему Windows Classic, Aero, Royale или любую другую. Если вы хотите, чтобы он выглядел точно таким же независимо от того, какую ОС или тему выбрал пользователь, вы избавите себя от головной боли, используя собственный шаблон элемента управления.

Google "Покажите мне шаблон" для приложения, которое предоставит вам источник шаблона управления (XAML) для каждой темы. Это хорошая отправная точка для создания пользовательских шаблонов.

1 голос
/ 28 июля 2010

Проблема, с которой вы сталкиваетесь, наиболее вероятна из-за значения по умолчанию Button Chrome.Вы можете применять все виды стилей, но если вы оставите этот Chrome нетронутым, тема Windows изменит свою уродливую голову.

Вам нужно будет воссоздать сам ControlTemplate.

...