2017-02-02 3 views
0

Я пытаюсь добавить словарь ресурсов для ComboBox, и я получаю эту ошибку после того, как я применил Stlye (стиль не будет работать/шоу):Ошибка - Не удается найти ресурс с именем «ComboBoxFocusVisual»

An необработанное исключение типа «System.Windows.Markup.XamlParseException» произошло в PresentationFramework.dll

Дополнительная информация: не удается найти ресурс с именем 'ComboBoxFocusVisual. Имена ресурсов чувствительны к регистру.

Что могло получиться не так? Я попытался перезагрузить проект и построить его.

Это мой код:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:local="clr-namespace:Test" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> 

<Style x:Key="ComboBoxx" TargetType="{x:Type ComboBox}"> 
    <Setter Property="FocusVisualStyle" Value="{StaticResource ComboBoxFocusVisual}"/> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/> 
    <Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/> 
    <Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
    <Setter Property="Padding" Value="4,3"/> 
    <Setter Property="ScrollViewer.CanContentScroll" Value="true"/> 
    <Setter Property="ScrollViewer.PanningMode" Value="Both"/> 
    <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ComboBox}"> 
       <Grid x:Name="MainGrid" SnapsToDevicePixels="true"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/> 
        </Grid.ColumnDefinitions> 
        <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom"> 
         <Border CornerRadius="5,5,5,5" MinWidth="{Binding ActualWidth, ElementName=MainGrid}" x:Name="DropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="#50FFFFFF" Height="100" d:IsHidden="True"> 
          <ScrollViewer x:Name="DropDownScrollViewer" Foreground="{x:Null}" Background="{x:Null}" Template="{DynamicResource ScrollViewerControlTemplate1}"> 
           <Grid RenderOptions.ClearTypeHint="Enabled"> 
            <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" OpacityMask="#FFFBFBFB"/> 
           </Grid> 
          </ScrollViewer> 
         </Border> 
        </Popup> 
        <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxReadonlyToggleButton}"/> 
        <ContentPresenter ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true"/> 
        <Trigger Property="HasItems" Value="false"> 
         <Setter Property="Height" TargetName="DropDownBorder" Value="95"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
         <Setter Property="Background" Value="#FFF4F4F4"/> 
        </Trigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsGrouping" Value="true"/> 
          <Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="false"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="ScrollViewer.CanContentScroll" Value="false"/> 
        </MultiTrigger> 
        <Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false"/> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="IsEditable" Value="true"> 
      <Setter Property="BorderBrush" Value="{StaticResource TextBoxBorder}"/> 
      <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/> 
      <Setter Property="IsTabStop" Value="false"/> 
      <Setter Property="Padding" Value="3"/> 
      <Setter Property="Template" Value="{StaticResource ComboBoxEditableTemplate}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

 <ResourceDictionary Source="C:\Users\PID Projekt I5\Desktop\SendMe\ArduinoSMS_sender\Resource Dictionary\ComboBoxx.xaml"/> 
+0

Где определить все ваши StaticResource? – Safe

+0

Я не уверен, что вы имеете в виду, но мои файлы находятся в подфайле в решении. Работает любой другой словарь ресурсов – someone1

ответ

0

Добавьте следующий недостающий стиль выше вашего стиля ComboBox:

<Style x:Key="FocusVisual"> 
    <Setter Property="Control.Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Вы, конечно, нужно определить «ButtonNormalBackground »,« ButtonNormalBorder »и все другие ресурсы, на которые вы ссылаетесь. Вы должны иметь возможность получить их с того же места, где вы получили стиль ...

+0

Почему эти стили отсутствуют? Это первый случай, когда это произошло – someone1

+0

. Хорошо, я думаю, это потому, что я определил этот стиль в области приложения в Blend – someone1

+0

«Почему эти стили отсутствуют?» - Потому что вы не добавили их в свой ResourceDictionary ... вы * должны * определить все ресурсы, которые вы используете где-то в области видимости. – mm8