Ich habe ein benutzerdefiniertes Benutzersteuerelement, das auf einem Popup (Erweitern eines Popup) basiert. Jetzt in diesem Usercontrol Ich habe dies:Popup ist geöffnet basierend auf 2 Bedingungen
<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>
So, jetzt ich das Gespräch in einer anderen Usercontrol, im Grunde das Popup geöffnet wird, wenn über einen ListItem mit der Maus geht über
<CustomControls:StandardPopup Isopen={Binding Value.Items.Count, Mode=OneWay, Converter={StaticResource ItemsCountToBoolean}, ConverterParameter=0}, PlacementTarget="{Binding ElementName=listboxItem}" Heading="ListItemDetails" >
Nun mein Problem ist Ich versuche, das Popup nicht anzuzeigen, wenn keine Elemente vorhanden sind. Da jedoch bereits ein Trigger für IsOpen = MouseOver vorhanden ist, funktioniert er nicht basierend auf der Anzahl der Elemente. Wie kann ich das lösen?
Ich habe auch schon eine CanOpen Dependency Property auf meinem CustomUserControl ausprobiert und dann versucht, an die IsOpen auf meinem StoryBoard zu binden, aber anscheinend kann man Binding nicht in einem StoryBoard verwenden.
Also ich denke, ich suche nach einer Lösung, um die IsOpen-Basis auf einen Trigger und eine Bindung zu setzen.
MultiDataTrigger? Wenn Sie eine Bindung an eine Count-Eigenschaft einer Auflistung herstellen, stellen Sie außerdem sicher, dass sie INotifyPropertyChanged für die Count-Eigenschaft implementiert (ObservableCollection, List nicht), andernfalls wird Speicher ausgeleert. – Arie