तुम बस क्लिक करें घटना को संभाल सकता
<Hyperlink>
<Hyperlink.Style>
<Style TargetType="{x:Type Hyperlink}">
<Style.Triggers>
<EventTrigger RoutedEvent="Hyperlink.Click">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
<Storyboard.Target>
<local:Dialogue />
</Storyboard.Target>
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Hyperlink.Style>
<Hyperlink.Inlines>
<Run Text="Open Dialogue"/>
</Hyperlink.Inlines>
</Hyperlink>
हालांकि यह एक बार के बाद से बहुत समस्याग्रस्त है संवाद बंद है इसे फिर से खोल नहीं किया जा सकता है, इसका मतलब है कि जब आप हाइपेलिन पर क्लिक करते हैं के फिर से एक अपवाद फेंक दिया जाएगा।
का उपयोग अन्तरक्रियाशीलता आप इस तरह की समस्याओं के बिना यह कर सकता है (मिश्रण एसडीके के लिए एक संदर्भ की जरूरत है, हालांकि):
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
<Hyperlink>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<t:CreateDialogAction Type="{x:Type local:Dialogue}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Hyperlink.Inlines>
<Run Text="Open Dialogue"/>
</Hyperlink.Inlines>
</Hyperlink>
इस के लिए कार्रवाई:
public class CreateDialogAction : TriggerAction<Hyperlink>
{
public Type Type { get; set; }
protected override void Invoke(object parameter)
{
if (Type != null && Type.IsSubclassOf(typeof(Window)) && Type.GetConstructor(Type.EmptyTypes) != null)
{
Window window = Type.GetConstructor(Type.EmptyTypes).Invoke(null) as Window;
window.Show();
}
}
}
स्रोत
2011-04-18 18:43:01