2014-05-05 66 views
1

我做了在vb.net中的文本框的一款Windows Phone 8讓列表框中點擊

它工作正常,但我想使列表框中點擊。

如果您按下文字,則不會發生任何反應。 有人可以幫我嗎? 這裏是我的代碼:

的XAML:

<phone:PhoneApplicationPage 
    x:Class="PhoneApp1.LijstRestaurants" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    mc:Ignorable="d" 
    shell:SystemTray.IsVisible="True"> 

    <Grid x:Name="LayoutRoot" Background="#FF386A06"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <!--TitlePanel contains the name of the application and page title--> 
     <StackPanel Grid.Row="0" Margin="12,17,0,28"/> 

     <!--ContentPanel - place additional content here--> 
     <TextBox x:Name="txtSearch" TextChanged="txtSearch_TextChanged" Text="" Margin="0,48,0,552" Height="80" ></TextBox> 
     <ListBox x:Name="listBox" FontSize="21" Height="580" Margin="0,100,0,0"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Restaurantnaam}" Width="440" Margin="10,15,0,0" Height="80"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
     <TextBlock HorizontalAlignment="Left" Margin="12,10,0,0" TextWrapping="Wrap" Text="Zoek je gewenste restaurant" VerticalAlignment="Top" FontSize="36" TextAlignment="Center"/> 
    </Grid> 

</phone:PhoneApplicationPage> 

VB.net:

Partial Public Class LijstRestaurants 
    Inherits PhoneApplicationPage 
    Private lstRestaurants As List(Of ClassRestaurants) = Nothing 
    Public Sub New() 
     InitializeComponent() 
    End Sub 

    Protected Overrides Sub OnNavigatedTo(args As NavigationEventArgs) 


     lstRestaurants = New List(Of ClassRestaurants)() 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "ABDIJ DER TRAPPISTEN" & vbNewLine & "Scheldemolenstraat Haven 1800, 9130 Beveren" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "ASTER-CAMPUS MELVEREN" & vbNewLine & "Antwerpsesteenweg 496, 2390 Malle" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "BAYER LILLO" & vbNewLine & "Retieseweg 111, 2440 Geel" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "CHR PELTZER LA TOURELLE" & vbNewLine & "Sint-jozefstraat 35, 2000 Antwerpen" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "CLINIQUE SAINT-JEAN" & vbNewLine & "Haven 1071 - Kapeldijk 40, 9130 Kallo" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "CPAS NIVILLES" & vbNewLine & "Minderbroedersstraat 5, 3800 Sint-Truiden" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "CUISINE CENTRALE CLINIQUE SAIN" & vbNewLine & "Vaartkaai 2, 2170 Merksem" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "DANONE N.V." & vbNewLine & "Rue Hauzeur de Simony 20, 4800 Verviers" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "ELECTRABEL KALLO" & vbNewLine & "Stiftstrasse 9, 4711 Astenet" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "ELECTRABEL KCD DOEL" & vbNewLine & "Haven 1992 Ketenislaan 2, 9130 Kallo" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "ELIA MERKSEM" & vbNewLine & "Huffengrasse 4/6, 4700 Eupen" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "ENI GAS & POWER" & vbNewLine & "Haven 507 Scheldelaan 420, 2040 Antwerpen" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "EUROPESE COMMISSIE IRMM" & vbNewLine & "Melverencentrum 111, 3800 Sint-Truiden" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "KARMEL BRUGGE" & vbNewLine & "Rue Samiette 70, 1400 Nivilles" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "KATHARINESTIFT" & vbNewLine & "Avenue Leopold Wiener 20, 1170 Brussel" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "LANXESS KALLO" & vbNewLine & "Lindestraat 3, 1540 Herne" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "MEALS ON WHEELS" & vbNewLine & "Sint-Jozefstraat 1A, 9041 Oostakker" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "MICROFIBRES EUROPE N.V." & vbNewLine & "Boulevard du jardin botanique 32, 1000 Brussel" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "MINDERBROEDERS" & vbNewLine & "Boulevard du jardin botanique 32, 1000 Brussel" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "O.C.M.W. HARELBEKE" & vbNewLine & "Lange Meire 56, 9270 Laarne" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "O.C.M.W. NINOVE" & vbNewLine & "Rue Guimard 1, 1040 Brussel" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "O.C.M.W. WIELSBEKE" & vbNewLine & "Hernieuwenstraat 15, 8710 Wielsbeke" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "O.C.M.C. WAREGEM - WZC DE MEERS" & vbNewLine & "Kapelaniestraat 2, 8953 Heuvelland-Wijtschate" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "O.C.M.W. HEUVELLAND ST MEDARD WZC." & vbNewLine & "Schakelstraat 41, 8790 Waregem" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "OUDE ABDIJ VAN DRONGEN V.Z.W." & vbNewLine & "Drongenplein 26, 9031 Drongen" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "RESIDENCE SAINTE-ANE" & vbNewLine & "Centrumlaan 173, 9400 Ninove" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "RUSTHUIS SINT-FELIX" & vbNewLine & "Vrijdomkaai 31, 8530 Harelbeke" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "SANKT-NIKOLAUS HOSPITAL" & vbNewLine & "Stationstraat 170, 3110 Rotselaar" _ 
     }) 
     lstRestaurants.Add(New ClassRestaurants() With { _ 
      .Restaurantnaam = "SINT-JOZEF INSTITUUT" & vbNewLine & "Ezelstraat 28, 8000 Brugge" _ 
     }) 
     Me.listBox.ItemsSource = lstRestaurants 
    End Sub 

    Private Sub txtSearch_TextChanged(sender As Object, e As TextChangedEventArgs) 
     If lstRestaurants IsNot Nothing Then 
      Me.listBox.ItemsSource = lstRestaurants.Where(Function(w) w.Restaurantnaam.ToUpper().StartsWith(txtSearch.Text.ToUpper())) 
     End If 
    End Sub 

End Class 

感謝。

回答

0

而是用按鈕或螺紋活動,你應該簡單地訂閱你的ListBox的SelectionChanged事件被解僱每次你點擊它的一個元素時左右擺弄。

<ListBox SelectionChanged="ListBox_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <!-- ... ->     
    </ListBox.ItemTemplate> 
</ListBox> 

在您的代碼背後,您可以捕獲此事件並找出您的哪些物品(餐館)造成的。

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if ((sender as ListBox).SelectedItem != null) 
    { 
     // This is your selected item:  
     ClassRestaurants selectedRestaurant = (sender as ListBox).SelectedItem as ClassRestaurants; 
     MessageBox.Show(selectedRestaurant.Restaurantnaam, "You selected:", MessageBoxButton.OK);     
    } 
} 

對不起,這是C#代碼,但我相信你可以把它翻譯成VB.net

希望有所幫助。

+0

感謝您的回答,但是當我單擊不同的文本時,如何獲取不同的消息框?我認爲通過這些代碼,你總是會得到同樣的信息。 – user3603407

+0

你試過了嗎?你應該總是得到你選擇的餐廳的名字。這是你想要的,不是嗎? –

+0

是啊,謝謝!我還有一個問題:如果我點擊一家餐廳,我想要獲得不同的營業時間......現在,總是有與餐廳名稱相同的消息框。你能幫我嗎? – user3603407

-1

添加點擊事件文本塊

或用按鈕替代的TextBlock並添加click事件,其內容綁定到文本

<ListBox x:Name="listBox" FontSize="21" Height="580" Margin="0,100,0,0"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding Restaurantnaam}" Width="440" Margin="10,15,0,0" Height="80" Tap="TextBlock_Tap"/> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

    <ListBox x:Name="listBox" FontSize="21" Height="580" Margin="0,100,0,0"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Button Content="{Binding Restaurantnaam}" Width="440" Margin="10,15,0,0" Height="80" Click="Button_Click"/> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

在你的代碼確保Textblock_Tap或Button_Click(無論你使用)的背後文件(PhoneApp1.LijstRestaurants.xaml.cs)。下面是C#代碼,很容易修改爲vb.net。

private void TextBlock_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    {} 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     Button b = sender as Button; 

     // Use datacontext to get associated ClassRestaurants 

     ClassRestaurants c = (b.DataContext) as ClassRestaurants;    
    } 
+0

如果我用一個按鈕替換文本塊,我得到一個debugger.break。你能告訴我必須改變的代碼嗎?謝謝。 – user3603407

+0

必須在您的代碼隱藏文件中定義事件點擊或點擊。我的答案是爲C#,但我想它簡單到足以調整到VB.NET –

+0

感謝您的答案,但我怎麼給所有不同的按鈕一個不同的消息框? – user3603407