2011-04-18 10 views

Respuesta

15

Puedes lograr esto así:

<Label Height="25" Margin="26,27,116,0" Name="label1" VerticalAlignment="Top"> 
    <Hyperlink Click="Hyperlink_Click">Click Me</Hyperlink> 
</Label> 

y manejarlo como esto:

private void Hyperlink_Click(object sender, RoutedEventArgs e) 
{ 
    Window2 form2 = new Window2(); 
    form2.Show(); 
} 
5

Se podía manejar el evento click:

<Hyperlink Click="Hyperlink_Click">Link</Hyperlink> 
private void Hyperlink_Click(object sender, RoutedEventArgs e) 
{ 
    Dialogue diag = new Dialogue(); 
    diag.Show(); 
} 

También podría volverse loco con 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> 

Sin embargo, esto es muy problemático, ya que una vez que el el diálogo está cerrado, no se puede volver a abrir, eso significa que cuando haces clic en Hypelin k de nuevo se lanzará una excepción.


El uso de la interactividad que podría hacer esto sin este tipo de problemas (necesita una referencia al SDK Mezcla sin embargo):

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> 

La acción para esto:

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(); 
     } 
    } 
} 
1

XAML:

<TextBlock Height="23" HorizontalAlignment="Left" Margin="254,130,0,0" Name="textBlock1" VerticalAlignment="Top"> 
     <Hyperlink Click="Hyperlink_Click">Clique Aqui</Hyperlink> 
     </TextBlock> 

CodeBehind:

private void Hyperlink_Click(object sender, RoutedEventArgs e) 
     { 
      MainWindow m = new MainWindow(); 
      m.Show(); 
     } 

esto?

0

Y usando MVVM se puede hacer en su Ver

<Hyperlink NavigateUri="{Binding MyUri}" 
      Command="{Binding OpenHyperlinkCommand}">Link text 
</Hyperlink> 

y en su modelo de vista

private ICommand _openHyperlinkCommand; 
public ICommand OpenHyperlinkCommand { 
    get 
    { 
     if (_openHyperlinkCommand == null) 
      _openHyperlinkCommand = new RelayCommand<object>(p => ExecuteHyperlink()); 
     return _openHyperlinkCommand; 
    } 
} 

private void ExecuteHyperlink() { 
    //do stuff here 
} 
Cuestiones relacionadas