0

単純な問題の(確かに)単純な解決策を見つけることができません:次のXAMLコードがある場合:

<StackPanel>
    <Button Content="Item">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseEnter"></i:EventTrigger>
            <i:EventTrigger EventName="MouseLeave"></i:EventTrigger>
        </i:Interaction.Triggers>
    </Button>
    <ListBox Visibility="Collapsed"></ListBox>
</StackPanel>

リストボックスをMouseEnterで表示し、MouseLeaveで非表示にします。たぶんワンライナーですが、見つかりません。どんな助けでも深く感謝します。ありがとう!

4

1 に答える 1

0

私はこれがあなたが求めていることをすると信じています:

<StackPanel xmlns:local="clr-namespace:SilverlightApplication;assembly=SilverlightApplication">
    <StackPanel.Resources>
        <local:BoolToUIElementVisibilityConverter x:Name="BoolToUIElementVisibilityConv"/>
    </StackPanel.Resources>

    <Button Content="Item" x:Name="YourButton">
    </Button>
    <ListBox Visibility="{Binding Path=IsMouseOver, ElementName=YourButton, Converter={StaticResource BoolToUIElementVisibilityConv}}">
        <ListBoxItem>a</ListBoxItem>
        <ListBoxItem>b</ListBoxItem>
        <ListBoxItem>c</ListBoxItem>
    </ListBox>
</StackPanel>

クラスで:

using System.Windows.Data;
using System;
using System.Globalization;
using System.Windows;

namespace SilverlightApplication
{
public class BoolToUIElementVisibilityConverter : IValueConverter
    {


    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
        if ((bool)value == true)
            return Visibility.Visible;
        else
            return "Collapsed";
        }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
        throw new NotImplementedException();
        }
    }
}
于 2012-11-13T17:08:57.547 に答える