2016-05-17 7 views
0

ich eine Suche User-Controller erstellt haben, und ich werde nicht Textchanged-Ereignis zur Verfügung, wenn um mit dem Benutzer-ControllerTextchanged-Ereignis nicht verfügbar, wenn mit Hilfe der User Control

<UserControl x:Class="VSOft.WpfControls.VSeachTextBox.VSearchTextBox" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:local="clr-namespace:VSOft.WpfControls.VSeachTextBox" 
     xmlns:resx="clr-namespace:VSOft.WpfControls.Properties" 
     xmlns:VFontAwsome="clr-namespace:VSOft.WpfControls.VFontAwsome" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300" Height="25" MouseLeftButtonDown="UserControl_MouseLeftButtonDown"> 
<Viewbox> 
    <Grid> 
     <TextBox 
      x:Name="SearchText" 
      Margin="0" 
      TextWrapping="Wrap" 
      Text="" Height="25" 
      GotFocus="SearchText_GotFocus" 
      TextInput="SearchText_TextInput" 
      TextChanged="SearchText_TextChanged" /> 
     <Label x:Name="SearchHelperLabel" Content="Search" Height="25" Foreground="#FF9E9292" GotFocus="SearchHelperLabel_GotFocus" /> 
     <TextBlock x:Name="SearchTextIcon" TextWrapping="Wrap" Margin="275,0,0,0" Height="25" Foreground="{x:Null}" GotFocus="SearchTextIcon_GotFocus" HorizontalAlignment="Right"> 
     <VFontAwsome:VFontAwsome VForeground="{DynamicResource SideBar.Icon.Normal}" VFontSize="20" VFontsType="search" Height="25" Width="25" HorizontalAlignment="Right" /> 
     </TextBlock> 
    </Grid> 
</Viewbox> 

Dies ist meine Umsetzung zu machen. Wie mache ich das Textchanged Event verfügbar, wenn ich das User Control verwende?

+1

wird Ihr Event nicht gefeuert oder möchten Sie es vom Hauptfenster aus aufrufen ?? – Rohit

+0

Hi kyle es auslöst Ich möchte es vom Hauptfenster aus aufrufen. Danke – Kalanamith

+1

Möchten Sie Ihrer Hauptfunktion im Hauptfenster eine andere Implementierung hinzufügen oder die vorhandene verwenden? Wenn Sie den vorhandenen verwenden möchten, können Sie die usercontrol-Ereignisse direkt aufrufen, indem Sie sein Objekt erstellen und auf seine Eigenschaft zugreifen, wie 'myUsercontrol.SearchText_GotFocus (this, null) ' – Rohit

Antwort

1

ein Weg, dies zu tun ist durch RoutedEvent Handler delegate mit dem Sie einen Delegaten in Ihrem Usercontrol platzieren und sie dann Zugriff auf die Mainwindow

In Ihrem UserControl.xaml.cs

public event RoutedEventHandler TestClick; 

    void onSearchFocus(object sender, RoutedEventArgs e) 
    { 
     if (this.TestClick != null) 
     { 
      this.TestClick(this, e); 
     } 
    } 

und in XAML

Sie können auf diesen Delegierten TestClick in Ihrem Hauptfenster wie jeden anderen Befehl zugreifen und seinen Navigationshandler erstellen.

<Grid> 
     <my:UserControl x:Name="testcontrol" TestClick="mycommand_click" /> 
    </Grid> 
Verwandte Themen