2

私のウィンドウのDataContextはIDictionary>です。

なぜこれがうまくいくのか誰かが私に説明できますか?

<Style x:Key="MenuItemStyle">
    <Setter Property="MenuItem.Header" Value="{Binding Ticker}"/>
</Style>
<Style x:Key="ContextMenuStyle">
    <Setter Property="MenuItem.Header" Value="{Binding Key}"/>
    <Setter Property="MenuItem.ItemsSource" Value="{Binding Value}"/>
    <Setter Property="MenuItem.ItemContainerStyle" Value="{StaticResource MenuItemStyle}"/>
</Style>
<ContextMenu ItemContainerStyle="{StaticResource ContextMenuStyle}" ItemsSource="{Binding Quotes}" />

しかし、これはしません:

<Style TargetType="{x:Type ContextMenu}" x:Key="ContextMenuStyle">
    <Setter Property="MenuItem.Header" Value="{Binding Key}"/>
    <Setter Property="MenuItem.ItemsSource" Value="{Binding Value}"/>
    <Setter Property="MenuItem.ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="{x:Type MenuItem}">
                <Setter Property="Header" Value="{Binding Ticker}"/>
            </Style>
        </Setter.Value>
    </Setter>
</Style>
<ContextMenu ItemContainerStyle="{StaticResource ContextMenuStyle}" ItemsSource="{Binding Quotes}" />

編集:T'argetType = "{x:Type ContextMenu}"'を削除すると、正常に機能します。しかし、その理由はよくわかりません。

ありがとう

4

1 に答える 1

2

TargetTypeの値をからContextMenuに変更する必要がありますMenuItem。のItemContainerStyleプロパティはContextMenu、スタイルを のコンテナ要素 (ContextMenuこの場合はMenuItem. ただし、スタイルのターゲット タイプを に設定すると、機能しContextMenuなくなります。詳細については、このリンクを参照してください。

于 2012-05-22T01:54:03.700 に答える