Почему WPF отображает мои элементы управления с разделением по диагонали?

WPF, похоже, разделяет мои элементы управления по диагонали. Что я делаю неправильно? Проблема яснее на синей кнопке, но все еще заметна на правой.

alt text alt text

Как ни странно, kaxaml отображает кнопки правильно. Дизайнер WPF никогда не думает. Когда я запускаю образец кода в автономном «WpfApplication1», он отображается правильно. Однако внутри моего приложения я получаю диагональный «разрез». Это' Ключ! Это только кнопки! Когда я создал автономную Border и поставил метку в качестве ее содержимого, никакого эффекта нарезки?!? !! Так что это не сам xaml, а что-то волшебное, связанное с кнопками ?! Думаете вслух, что делать с тем, чтобы не полностью переопределить шаблон кнопки по умолчанию?

Обновление 2: Что ж, с каждой минутой это становится еще более странным. Это как-то связано с эффектом тени. Кажется, что первый тип отображаемого элемента управления, который имеет эффект (BitmapEffect или wpf 4.0 Effect), разделяется, как и все другие экземпляры элемента управления этого типа. Например, вот DatePicker с красивой красной тенью, которая разделяет элемент управления DatePicker по диагонали, после этого с кнопкой все в порядке, несмотря на то, что к ней также применен эффект.

alt text

Если я не применяю эффект, никакие элементы управления не разделяются. Если я рисую элемент управления с эффектом, этот элемент управления разделяется, и последующие элементы управления разных типов подходят. Однако, если у вас есть два или три элемента управления одного типа, они тоже разделяются. То есть, если кнопка разделена, все кнопки на странице также будут разделены.

Это должно быть связано с моим графическим процессором или графическими драйверами. Я' Я обновил их сегодня утром, но без радости. (Я использую Radeon Mobility HD 5650, v 8.683.2.0). Если эта проблема связана только с моим компьютером, я полагаю, что это не конец света. Возможно, я смогу победить его в его собственной игре, нарисовав эффект прозрачности на случайном пикселе Path в верхней части каждой страницы или что-то в этом роде ...

Обновление 3

О боже. Я воспроизвел это на другом ПК, так что это не моя видеокарта или драйверы.

        <StackPanel.Resources>

            <!-- Background for button when IsDefault  true"-->
            <LinearGradientBrush x:Key="DefaultButtonFill" StartPoint="0.5, 0" EndPoint="0.5, 1">
                <GradientStop Color="#FFDFEDEC" Offset="0"/>
                <GradientStop Color="#FF92B1E3" Offset="0.4"/>
                <GradientStop Color="#FF749EE0" Offset="0.5"/>
                <GradientStop Color="#94DDF6" Offset="1"/>
            </LinearGradientBrush>

            <!-- default button background -->
            <LinearGradientBrush x:Key="NotDefaultButtonFill" StartPoint="0.5, 0" EndPoint="0.5, 1">
                <GradientStop Color="#FFEFEFF5" Offset="0"/>
                <GradientStop Color="#FFE1E1E6" Offset="0.4"/>
                <GradientStop Color="#FFC7CBD0" Offset="0.5"/>
                <GradientStop Color="#FFE8ECEE" Offset="1"/>
            </LinearGradientBrush>

            <Style TargetType="Button">
                <Setter Property="FontSize" Value="14"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border x:Name="border"
                        CornerRadius="12"
                        Background="{StaticResource NotDefaultButtonFill}"
                        Padding="25 8"
                        Margin="10"
                        Cursor="Hand">


                                <Border.BitmapEffect>
                                    <DropShadowBitmapEffect x:Name="shadow" Direction="280" Color="Black"  ShadowDepth="2" Opacity=".6"/>
                                </Border.BitmapEffect>

                                <!--
                    <Border.Effect>
                        <DropShadowEffect x:Name="shadow" Direction="280" Color="Black"  ShadowDepth="2" Opacity=".6"/>
                    </Border.Effect>-->

                                <ContentPresenter 
                            HorizontalAlignment="Center"
                            VerticalAlignment="Center"
                            Content="{TemplateBinding Content}" />

                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsDefault" Value="True">
                                    <Setter TargetName="border" Property="Background" Value="{StaticResource DefaultButtonFill}"/>
                                </Trigger>
                                <Trigger Property="IsEnabled" Value="False">
                                    <Setter TargetName="border" Property="Background" Value="LightGray"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>





        </StackPanel.Resources>

        <StackPanel Orientation="Horizontal">
            <Button>Normal</Button>
            <Button IsDefault="True">IsDefault</Button>
        </StackPanel>
    </StackPanel>
7
задан Noel Kennedy 17 January 2011 в 21:57
поделиться