У меня есть пользовательский UserControl, основанный на всплывающем окне (расширение всплывающего окна). Сейчас в этом UserControl У меня есть это:Всплывающее окно открыто на основе 2 условий
<Popup.Style>
<Style TargetType="Popup">
<Style.Triggers>
<DataTrigger Binding="{Binding PlacementTarget.IsMouseOver, RelativeSource={RelativeSource Self}}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard x:Name="OpenPopupStoryBoard" >
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" FillBehavior="HoldEnd">
<DiscreteBooleanKeyFrame KeyTime="0:0:0.10" Value="True"/>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<PauseStoryboard BeginStoryboardName="OpenPopupStoryBoard"/>
<BeginStoryboard x:Name="ClosePopupStoryBoard">
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" FillBehavior="HoldEnd">
<DiscreteBooleanKeyFrame KeyTime="0:0:0.2" Value="False"/>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<PauseStoryboard BeginStoryboardName="ClosePopupStoryBoard" />
</Trigger.EnterActions>
<Trigger.ExitActions>
<PauseStoryboard BeginStoryboardName="OpenPopupStoryBoard"/>
<ResumeStoryboard BeginStoryboardName="ClosePopupStoryBoard" />
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
</Popup.Style>
Так что теперь я называю это в другой UserControl, в основном всплывающее окно получает открыт При переходе через ListItem с помощью мыши с помощью
<CustomControls:StandardPopup Isopen={Binding Value.Items.Count, Mode=OneWay, Converter={StaticResource ItemsCountToBoolean}, ConverterParameter=0}, PlacementTarget="{Binding ElementName=listboxItem}" Heading="ListItemDetails" >
Теперь моя проблема , Я пытаюсь не показывать всплывающее окно, когда нет элементов, но поскольку есть триггер уже из IsOpen = MouseOver, он не работает в зависимости от количества элементов. Как я могу это решить.
Я также уже пробовал свойство CanOpen Dependecy на моем CustomUserControl, а затем попытался связать с IsOpen на моем StoryBoard, но, по-видимому, нельзя использовать привязку в StoryBoard.
Так что я думаю, что я ищу решение для установки базы IsOpen на триггер и привязку.
MultiDataTrigger? Кроме того, если вы привязываетесь к свойству Count из коллекции, убедитесь, что он реализует свойство INotifyPropertyChanged в свойстве Count (ObservableCollection делает, List is not), иначе вы будете утечки памяти. – Arie