В моем проекте я использую Extended WPF Toolkit. Мне пришлось переопределить стиль по умолчанию для WatermarkTextBox. На первый взгляд это было нормально - запуск приложений и стиль применяется, но когда я смотрю на дизайнера - все органы управления, кроме WatermarkTextBox применили конструкции и WatermarkTextBox не имеет]Стиль управления WPF не применяется во время разработки
Мой словарь файл ресурсов:.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:wpf="clr-namespace:System.Windows;assembly=PresentationFramework"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit">
И стиль (все статические ресурсы определяются в том же файле в начале):
<Style x:Key="{x:Type xctk:WatermarkTextBox}" TargetType="{x:Type xctk:WatermarkTextBox}">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="KeyboardNavigation.TabNavigation" Value="None" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="MinWidth" Value="50" />
<Setter Property="MinHeight" Value="34" />
<Setter Property="Height" Value="34" />
<Setter Property="AllowDrop" Value="True" />
<Setter Property="Foreground" Value="{StaticResource DarkGrayBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource GrayBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Background" Value="{StaticResource WhiteBrush}" />
<Setter Property="Padding" Value="4,3,4,3" />
<Setter Property="FontFamily" Value="{StaticResource OpenSans}" />
<Setter Property="FontSize" Value="13" />
<Setter Property="FontWeight" Value="Regular" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="MaxLines" Value="1" />
<Setter Property="TextAlignment" Value="Left" />
<Setter Property="WatermarkTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"
Foreground="{StaticResource GrayBrush}"
Focusable="False" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type xctk:WatermarkTextBox}">
<Border Name="Border"
CornerRadius="2"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}" >
<Grid Margin="{TemplateBinding Padding}">
<ScrollViewer x:Name="PART_ContentHost"
Panel.ZIndex="10"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
<ContentPresenter x:Name="PART_WatermarkHost"
Content="{TemplateBinding Watermark}"
ContentTemplate="{TemplateBinding WatermarkTemplate}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
IsHitTestVisible="False"
Margin="6,0,0,0"
Visibility="Collapsed" />
</Grid>
<wpf:VisualStateManager.VisualStateGroups>
<wpf:VisualStateGroup x:Name="CommonStates">
<wpf:VisualStateGroup.Transitions>
<wpf:VisualTransition GeneratedDuration="0" />
</wpf:VisualStateGroup.Transitions>
<wpf:VisualState x:Name="Normal" />
<wpf:VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)">
<EasingColorKeyFrame KeyTime="0" Value="{StaticResource DarkBlueColor}" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</wpf:VisualState>
<wpf:VisualState x:Name="Disabled">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)">
<EasingColorKeyFrame KeyTime="0" Value="{StaticResource LightGrayColor}" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</wpf:VisualState>
<wpf:VisualState x:Name="ReadOnly" />
</wpf:VisualStateGroup>
</wpf:VisualStateManager.VisualStateGroups>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter TargetName="PART_WatermarkHost" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="Text" Value="{x:Static system:String.Empty}">
<Setter TargetName="PART_WatermarkHost" Property="Visibility" Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я определил мои стили в Styles.xaml файле. и я ссылаюсь на него в каждом файле UserControl. Например:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
И я хочу, чтобы применить этот стиль для WatermarkTextBox:
<xctk:WatermarkTextBox Margin="0,0,0,20" Text="{Binding MyField, Mode=TwoWay}">
<xctk:WatermarkTextBox.Watermark>
<TextBlock Text="Watermark text"
Style="{x:Null}" />
</xctk:WatermarkTextBox.Watermark>
</xctk:WatermarkTextBox>
Итак, как я уже говорил - я вижу стиль применяется во время выполнения, но в VS2013 дизайнер использует стиль по умолчанию для контроля. Я хочу видеть правильный стиль во время разработки. Является ли это возможным?
Существуют ли какие-либо ограничения на размер файла ресурсов такого типа? Мой файл содержит ~ 2000 строк кода XAML и определено около 40 стилей.