2017-07-30 45 views
0

我有DataTemplateItemsControlPage.Xaml和代碼如下所示:如何ItemsControl的訪問特定的項目,並取得了一些數據,UWP

<ItemsControl x:Name="chatUI" VerticalAlignment="Bottom"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid x:Name="myGrid" Width="340" Background="{Binding Background}" HorizontalAlignment="{Binding GridHorizontalAlign}" Margin="10,0,10,10" MinHeight="45" BorderBrush="#FF003A4F" BorderThickness="0,0,0,2"> 
       <Polygon Visibility="{Binding RightVisibility}" Fill="{Binding Background}" Points="0,0 5,6, 0,12" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,0,-5,0" /> 
       <Polygon Visibility="{Binding LeftVisibility}" Fill="{Binding Background}" Points="5,0 0,6, 5,12" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="-5,0,0,0" /> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition /> 
         <RowDefinition /> 
        </Grid.RowDefinitions> 
        <TextBlock Text="{Binding Text}" TextWrapping="Wrap" FontSize="15" FontFamily="Segoe UI" Foreground="White" Margin="10,10,10,0"/> 
        <TextBlock Grid.Row="1" Text="{Binding Time}" TextWrapping="Wrap" FontSize="11" FontFamily="Segoe UI" Foreground="LightGray" Margin="10,0,10,5" VerticalAlignment="Bottom" TextAlignment="Right"/> 
       </Grid> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

我需要什麼,現在越來越Text這是綁定到TextBlock時,我右鍵單擊名爲myGrid的網格。在C#中如何可能?

+0

你在哪裏需要得到約束'Text'? – Fruchtzwerg

+0

@Fruchtzwerg我需要它作爲一個字符串,當我右鍵點擊一個特定的項目。 – ZOTeam

+0

這不是我的問題的答案_where_你需要字符串。 – Fruchtzwerg

回答

0

我們可以添加網格的RightTapped事件,當您右鍵單擊網格時它會被觸發。

RightTapped事件中,我們可以使用Grid.Children來獲取Grid的子元素的集合。我們可以在名爲myGrid的根網格中獲得Grid。我們可以使用Grid.Children來獲取網格中的TextBlock

例如:

private async void myGrid_RightTapped(object sender, RightTappedRoutedEventArgs e) 
{ 
    var RightTapGrid = sender as Grid; 
    var childernElements = RightTapGrid.Children; 
    foreach (var item in childernElements) 
    { 
     var grid = item as Grid; 
     if (grid != null) 
     { 
      var itemchildernElements = grid.Children; 
      foreach (var text in itemchildernElements) 
      { 
       var textBlock = text as TextBlock; 
       var dialog = new ContentDialog() 
       { 
        Title = textBlock.Text, 
        MaxWidth = this.ActualWidth 
       }; 
       dialog.PrimaryButtonText = "OK"; 
       dialog.SecondaryButtonText = "Cancel"; 
       await dialog.ShowAsync(); 
       break; 
      } 
     } 
    } 
} 
+0

非常感謝!像魅力一樣工作 – ZOTeam

0

如果你得到你的Binding DataClass稱爲ClassName

你可以試試這個代碼

XAML:

<ListView x:Name="chatUI" VerticalAlignment="Bottom" SelectionChanged="chatUI_SelectionChanged"> 
<ListView.ItemTemplate> 
    <DataTemplate> 
     <Grid x:Name="myGrid" Width="340" Background="{Binding Background}" HorizontalAlignment="{Binding GridHorizontalAlign}" Margin="10,0,10,10" MinHeight="45" BorderBrush="#FF003A4F" BorderThickness="0,0,0,2"> 
      <Polygon Visibility="{Binding RightVisibility}" Fill="{Binding Background}" Points="0,0 5,6, 0,12" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,0,-5,0" /> 
      <Polygon Visibility="{Binding LeftVisibility}" Fill="{Binding Background}" Points="5,0 0,6, 5,12" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="-5,0,0,0" /> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <TextBlock Text="{Binding Text}" TextWrapping="Wrap" FontSize="15" FontFamily="Segoe UI" Foreground="White" Margin="10,10,10,0"/> 
       <TextBlock Grid.Row="1" Text="{Binding Time}" TextWrapping="Wrap" FontSize="11" FontFamily="Segoe UI" Foreground="LightGray" Margin="10,0,10,5" VerticalAlignment="Bottom" TextAlignment="Right"/> 
      </Grid> 
     </Grid> 
    </DataTemplate> 
</Listview.ItemTemplate> 

並添加SelectionChanged事件:

private void chatUI_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    ListView view = (ListView)sender; 
    //Get Selected Item 
    ClassName class = view.SelectedItem as ClassName; 
    string path = class.Text; 

// Now we have Text of selected item in Listview 

} 
+0

是否必須是ListView?我們不能在ItemsControl中做到這一點嗎? – ZOTeam

+0

不,因爲ItemControl沒有SelectionChanged事件 –

相關問題