всплывающий триггер не работает должным образом - PullRequest
0 голосов
/ 04 июля 2010

У меня есть два элемента управления в сетке, эллипс и всплывающее окно. Идея состоит в том, что оба элемента управления отображаются, только если свойство IsDirty в модели представления имеет значение true; если это так, то Ellipse будет зеленым, если та же модель представления IsValid, и красным, если нет, а всплывающее окно отображает сообщения, если пользователь наводит курсор мыши на всплывающее окно.

Содержимое и привязки для всплывающего окна правильные, поэтому мне интересно, смогу ли я контролировать, является ли он IsOpen или нет, используя триггер в своем собственном стиле, как в коде ниже.

Приветствия
Berryl

<Popup x:Name="dirtyPopup" AllowsTransparency="True" >
    <Popup.Style>
        <Style TargetType="Popup">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="IsOpen" Value="{Binding IsDirty}"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Popup.Style>
    <Grid content goes here />
</Popup>

1 Ответ

1 голос
/ 04 июля 2010

Я не думаю, что вы хотите привязать IsMouseOver во всплывающем окне.Это будет верно только в том случае, если мышь находится над самим всплывающим окном, что может произойти, только если всплывающее окно уже открыто, поэтому вы никогда не сможете его открыть.

Возможно, вы хотите, чтобы всплывающее окно было открыто, если указатель мыши находится над другим элементом управления, например, над эллипсом.Самый простой способ сделать это - ToolTip .Если вы установите свойство ToolTip на вашем Ellipse, то когда мышь находится над Ellipse, появится всплывающее окно ToolTip.Как то так:

<Ellipse>
    <Ellipse.ToolTip>
        <Grid content goes here />
    </Ellipse.ToolTip>
</Ellipse>
...