2011-07-26 20 views
3

私は、次のResourceDictionary(短縮)を持っている:ResourceDictionaryキーの順序はどのように決定されますか?

<ResourceDictionary> 
    <Fluent:RibbonContextualTabGroup Header="Dokument" x:Key="dokumentRibbonGroup" x:Name="dokumentRibbonGroup" /> 
    <Fluent:RibbonTabItem x:Key="dokumentRibbonTab" Header="Start" /> 
    <Fluent:RibbonTabItem x:Key="ueberpruefenRibbonTab" Header="Überprüfen" /> 
    <Fluent:RibbonTabItem x:Key="austauschRibbonTab" Header="Austausch" /> 
</ResourceDictionary> 

私は辞書のKeysプロパティにアクセスすると、キーは次の順序である:

 
dokumentRibbonTab 
austauschRibbonTab 
ueberpruefenRibbonTab 
dokumentRibbonGroup 

私が作ることができませんその秩序のいかなる感覚。アルファベット順ではなく、元の順序ではなく、特にリサーチ対象ではありません。誰かがヒントを持っていますか?それとも、より良い、ResourceDictionaryのアイテムの順序を指定する方法の提案?

答えて

5

何とかハッシュコードに基づいている可能性があります。 (ただし、必ずしも「ハッシュコードの昇順」である必要はありません。)特に、ドキュメントの状態:

ResourceDictionaryクラスはDictionaryBaseから派生していません。代わりに、ResourceDictionaryクラスはIDictionaryを実装しますが、内部的にHashtableに依存します。

ハッシュテーブルを使用すると、その順序はハッシュによって決まる可能性があります。

一般的な辞書は、ではなく、むしろ信頼されるべきではない実装の詳細です。

注文を指定するドキュメントが表示されないことを考えれば、は、順序付けされていないものとしてを処理する必要があります。特定の順序でキーを提示したい場合は、それを自分で行う必要があります。

+0

私たちはそれが定義されている順序であると言うことができますか?それはStaticResourceにのみ適用されますか? –

+0

@Kishore:いいえ、私はそれを強制する方法はないと思います。注文についても*ケア*するのは珍しいことです(IMO)。 –

+0

for staticresourceリソースを参照している場合は、そのリソースを使用する前に定義する必要があります。その場合はどうですか? –

関連する問題