Кнопка внутри элемента ListView - как получить контент? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть кнопка внутри DataTemplate элемента управления.Как получить значение передачи из элемента списка в событие нажатия кнопки?

<ListView x:Name="listView1">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="x:String">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="47"/>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <Image Source="Assets/placeholder.png" Width="32" Height="32" 
                       HorizontalAlignment="Left"/>
                <TextBlock Text="{x:Bind}" Foreground="Teal" 
                           FontSize="15" Grid.Column="1"/>
                <Button Content="Click Me" x:Name="Bttn" Click="Bttn.Click"/>
            </Grid> 
        </DataTemplate>
    </ListView.ItemTemplate>
    <x:String>Item 1</x:String>
    <x:String>Item 2</x:String>
    <x:String>Item 3</x:String>
    <x:String>Item 4</x:String>
    <x:String>Item 5</x:String>
</ListView>

private void Bttn_Click(object sender, RoutedEventArgs e)
{
    //Write text from item
}

1 Ответ

0 голосов
/ 15 октября 2018

просто добавьте элемент в DatContext кнопки и извлеките его в событии, по которому щелкнули.

<ListView x:Name="listView1">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="x:String">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="47"/>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <Image Source="Assets/placeholder.png" Width="32" Height="32" 
                       HorizontalAlignment="Left"/>
                <TextBlock Text="{x:Bind}" Foreground="Teal" 
                           FontSize="15" Grid.Column="1"/>
                <Button Content="Click Me" x:Name="Bttn" Click="Bttn.Click" 
DataContext="{x:Bind}" />
            </Grid> 
        </DataTemplate>
    </ListView.ItemTemplate>
    <x:String>Item 1</x:String>
    <x:String>Item 2</x:String>
    <x:String>Item 3</x:String>
    <x:String>Item 4</x:String>
    <x:String>Item 5</x:String>
</ListView>

private void Bttn_Click(object sender, RoutedEventArgs e)
{
    //Write text from item
    string item = ((sender as Button).DataContext) as string;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...