Ale*_*dez 21
你可以这样做:
<Label Height="25" Margin="26,27,116,0" Name="label1" VerticalAlignment="Top">
<Hyperlink Click="Hyperlink_Click">Click Me</Hyperlink>
</Label>
Run Code Online (Sandbox Code Playgroud)
并像这样处理它:
private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
Window2 form2 = new Window2();
form2.Show();
}
Run Code Online (Sandbox Code Playgroud)
你可以只处理click事件:
<Hyperlink Click="Hyperlink_Click">Link</Hyperlink>
Run Code Online (Sandbox Code Playgroud)
private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
Dialogue diag = new Dialogue();
diag.Show();
}
Run Code Online (Sandbox Code Playgroud)
你也可以对XAML发疯:
<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>
Run Code Online (Sandbox Code Playgroud)
然而,这是非常有问题的,因为一旦对话关闭它就无法重新打开,这意味着当您再次点击超链接时,将抛出异常.
使用交互性可以在没有这些问题的情况下执行此操作(但需要引用Blend SDK):
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
对此的行动:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18995 次 |
| 最近记录: |