1

私は私を怒らせている問題を抱えています、そして私はただ解決策を見つけることができないようです。

私はリストビューを持っています。そのlistivewItemTemplateは、次のようなデータテンプレートです。

<DataTemplate x:Key="template" >
  <TextBlock  Foreground="Green"  >
    <Hyperlink   Command="{Binding LoadReportCommand}"
              CommandParameter="{Binding DisplayName}"  >
            <TextBlock  Text="{Binding DisplayName}"  />
    </Hyperlink>       
   </TextBlock>
</DataTemplate>

ハイパーリンクのスタイルは次のとおりです。

<Style x:Key="{x:Type Hyperlink}" TargetType="{x:Type Hyperlink}">
    <Setter Property="Foreground" Value="Green" />
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding RelativeSource={RelativeSource   FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="True" />
            <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=Selector.IsSelectionActive}" Value="True" />
            </MultiDataTrigger.Conditions>
            <Setter Property="Foreground" Value="White"/>
        </MultiDataTrigger>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
        </Trigger>
    </Style.Triggers>
</Style>

そのまま使用すると、アイテム選択時のように前景が白くなりません。コマンドが期待どおりに有効になっていない場合は、前景が灰色になります。Selector.IsSelectionActiveの条件を削除すると、アイテムが選択されているときに前景が白になりますが、アイテムが選択されているがアクティブでない場合も白になります。非アクティブな選択を緑にします。平面のTextblock、非常に基本的なスタイルのボタンだけでもこれを試しました...何も機能していないようです。

リストビューは、別のユーザーコントロールで使用されているユーザーコントロールにあります。Datatemplateは2番目のユーザーコントロールのresourcedictionaryにあり、タイプDataTemplateの最初のユーザーコントロールの依存関係プロパティにバインドされており、ハイパーリンクのスタイルは別のResourcedictionaryにあります。

どんな助けでも大歓迎です

4

1 に答える 1

3

うーんSelector.IsSelectionActiveは、コントロールがフォーカスされていないときにfalseですか?もしそうなら、多分あなたはリストビューで祖先バインディングを使用してフォーカスをチェックすることができますか?

これを見てみると、添付されたプロパティにバインドしているので、構文が少し変更されています。代わりにPath =(Selector.IsSelectionActive)}を試してください。

緑のリンク-奇数:)

于 2010-11-09T13:01:52.650 に答える