アプリケーションに含める単一のリソース ディクショナリに共有スタイルを配置しました。たとえば、 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>