У меня интересная проблема.Я создал WPF UserControl, который содержит кнопку с использованием шаблона:
<Button x:Name="btnStart" Template="{StaticResource RoundedGlassButton}" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="4" Height="32" Background="DarkGreen" Foreground="White" Width="72" Content="Start" />
Когда я помещаю UserControl в родительский элемент управления или форму, дизайнер выдает ошибку, "Не удалось создатьэкземпляр типа 'MyUserControl'. " Однако, хотя дизайнер не будет работать, приложение все равно будет компилироваться, и я получаю желаемые результаты во время выполнения.Я сузил проблему до шаблона, примененного к моей кнопке.Когда я удаляю шаблон, дизайнер работает:
<Button x:Name="btnStart" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="4" Height="32" Background="DarkGreen" Foreground="White" Width="72" Content="Start" />
Я использую этот конкретный шаблон повсеместно - так что я знаю, что он работает.Это даже работает на других UserControls.Я просто не могу понять, почему это не работает в этом конкретном UserControl.
У кого-нибудь есть идеи?Трудно создать пользовательский интерфейс, не видя результатов в визуальном конструкторе.
Ниже приведена разметка для шаблона.Однако, как я уже сказал, я использую это везде без проблем.На самом деле, я даже использую его в других пользовательских элементах управления просто отлично.Я просто озадачен тем, почему он не будет работать для этого конкретного кода.
<ControlTemplate x:Key="RoundedGlassButton" TargetType="{x:Type Button}">
<ControlTemplate.Resources>
<Storyboard x:Key="Timeline1">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="glow" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Timeline2">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="glow" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</ControlTemplate.Resources>
<Border BorderBrush="#FF888888" BorderThickness="1,1,1,1" CornerRadius="4">
<Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="#FF000000" BorderThickness="1,1,1,1" CornerRadius="4">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.507*"/>
<RowDefinition Height="0.493*"/>
</Grid.RowDefinitions>
<Border Opacity="0" BorderThickness="2" BorderBrush="White" HorizontalAlignment="Stretch" x:Name="glow" Width="Auto" Grid.RowSpan="2" CornerRadius="4">
<Border.BitmapEffect>
<BlurBitmapEffect Radius="2" />
</Border.BitmapEffect>
</Border>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Grid.RowSpan="2" SnapsToDevicePixels="True" />
<Border HorizontalAlignment="Stretch" Margin="0,0,0,0" x:Name="shine" Width="Auto" CornerRadius="4,4,8,8">
<Border.Background>
<LinearGradientBrush EndPoint="0.494,0.889" StartPoint="0.494,0.028">
<GradientStop Color="#AAFFFFFF" Offset="0"/>
<GradientStop Color="#33FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Opacity" TargetName="shine" Value="0.4"/>
<Setter Property="Background" TargetName="border" Value="#CC000000"/>
<Setter Property="Visibility" TargetName="glow" Value="Hidden"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Timeline1}"/>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard x:Name="Timeline2_BeginStoryboard" Storyboard="{StaticResource Timeline2}"/>
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Из-за сроков выполнения проекта я переместил разметку непосредственно в родительский элемент управления, чтобы обойти проблему длясейчас. Тем не менее, если у кого-то есть какие-либо идеи о том, что может быть причиной проблемы, любая помощь все равно будет оценена.