2

アプリケーションに含める単一のリソース ディクショナリに共有スタイルを配置しました。たとえば、 I というファイルGlobalStyles.xamlには次のものがあります。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="BaseStyle" TargetType="FrameworkElement">...</Style>
    <Style x:Key="ExtendedStyle" TargetType="FrameworkElement" BasedOn="{StaticResource BaseStyle}">...</Style>
</ResourceDictionary>

次のように、このファイルを app.xaml に含めます。

<Application.Resources>
    <ResourceDictionary Source="GlobalStyles.xaml" />
</Application.Resources>

これは機能するはずですが、ExtendedStyle で次のビルド エラーが発生します: Error: Index was outside the bounds of the array.. BasedOnディレクティブを削除すると、同じエラーBaseStyleが発生しますが、ExtendedStyle. これは本当に変です。誰でもこのエラーを説明できますか?

編集: スタイルは次のとおりです。

    <Style x:Key="BaseStyle" TargetType="FrameworkElement">
    <!-- Background -->
    <Setter Property="Control.Background" Value="{StaticResource White0ColorBrush}"/>
    <!-- Border -->
    <Setter Property="Control.BorderBrush" Value="{StaticResource Green1ColorBrush}"/>
    <Setter Property="Control.BorderThickness" Value="0"/>
    <!-- Font -->
    <Setter Property="Control.FontWeight" Value="Light"/>
    <Setter Property="Control.Foreground" Value="{StaticResource Green0ColorBrush}"/>
    </Style>

<Style x:Key="ExtendedStyle" TargetType="FrameworkElement" BasedOn="{StaticResource BaseStyle}">
    <Setter Property="Control.Background" Value="{StaticResource Green1ColorBrush}"/>
    <Setter Property="Control.Foreground" Value="{StaticResource White0ColorBrush}"/>
</Style>

この 2 つのスタイルに特別なことはないと思います。VS を再起動すると、 に依存する別のスタイルのエラーが発生しExtendedStyleます。

編集 2: 新しい空の WPF アプリケーション プロジェクトを作成し、そのGlobalStyles.xamlファイルを app.xml に含めました。それはうまく構築されました。次に、これらの行を window.xaml に追加したところ、同じエラーが発生しました。

    <Grid>
      <Border BorderThickness="2" CornerRadius="5" BorderBrush="{StaticResource White0ColorBrush}" Style="{StaticResource ExtendedBaseStyle}">
        <Grid>
           <TextBox x:Name="SearchField" Height="20" BorderThickness="0" HorizontalAlignment="Stretch" HorizontalContentAlignment="Left" VerticalContentAlignment="Center" />
        </Grid>
      </Border>
    </Grid>
4

1 に答える 1