WPF, похоже, разделяет мои элементы управления по диагонали. Что я делаю неправильно? Проблема яснее на синей кнопке, но все еще заметна на правой.
Как ни странно, kaxaml отображает кнопки правильно. Дизайнер WPF никогда не думает. Когда я запускаю образец кода в автономном «WpfApplication1», он отображается правильно. Однако внутри моего приложения я получаю диагональный «разрез». Это'
Ключ! Это только кнопки! Когда я создал автономную Border
и поставил метку в качестве ее содержимого, никакого эффекта нарезки?!? !! Так что это не сам xaml, а что-то волшебное, связанное с кнопками ?! Думаете вслух, что делать с тем, чтобы не полностью переопределить шаблон кнопки по умолчанию?
Обновление 2:
Что ж, с каждой минутой это становится еще более странным. Это как-то связано с эффектом тени. Кажется, что первый тип отображаемого элемента управления, который имеет эффект (BitmapEffect или wpf 4.0 Effect), разделяется, как и все другие экземпляры элемента управления этого типа. Например, вот DatePicker с красивой красной тенью, которая разделяет элемент управления DatePicker по диагонали, после этого с кнопкой все в порядке, несмотря на то, что к ней также применен эффект.
Если я не применяю эффект, никакие элементы управления не разделяются. Если я рисую элемент управления с эффектом, этот элемент управления разделяется, и последующие элементы управления разных типов подходят. Однако, если у вас есть два или три элемента управления одного типа, они тоже разделяются. То есть, если кнопка разделена, все кнопки на странице также будут разделены.
Это должно быть связано с моим графическим процессором или графическими драйверами. Я' Я обновил их сегодня утром, но без радости. (Я использую 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>