我有一個基於Popup(擴展彈出框)的自定義UserControl。 現在,在這個用戶控件我有這樣的:Popup基於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>
所以現在我把這個在另一個用戶控件,基本彈出被打開時,通過
<CustomControls:StandardPopup Isopen={Binding Value.Items.Count, Mode=OneWay, Converter={StaticResource ItemsCountToBoolean}, ConverterParameter=0}, PlacementTarget="{Binding ElementName=listboxItem}" Heading="ListItemDetails" >
現在我的問題是要在與您的鼠標一個ListItem ,我試圖在沒有Items時顯示彈出框,但由於IsOpen = MouseOver已經有觸發器,因此它不能根據項目的計數工作。我該如何解決這個問題。
我也已經在我的CustomUserControl上嘗試了CanOpen Dependecy屬性,然後嘗試綁定到我的StoryBoard上的IsOpen,但是顯然不能在StoryBoard中使用綁定。
所以我想我正在尋找一個解決方案來設置IsOpen基礎的觸發器和綁定。
MultiDataTrigger?此外,如果您綁定到集合的Count屬性,請確保它在Count屬性上實現INotifyPropertyChanged(ObservableCollection,List不),否則您將泄漏內存。 – Arie