UWP C# Toggleswitch внутри Listview - Как получить элементы строки при нажатии на Toggleswitch - PullRequest
0 голосов
/ 18 февраля 2020

Так что у меня есть этот Listview с Toggleswitch. Что я хочу сделать, так это запустить событие типа ItemClick="Event_Overview_Teams_ItemClick", но с Toggled="TeamPresent_Toggled" и работать с такими элементами, как TeamID из строки, по которой щелкнули.

<ListView x:Name="Event_Overview_Teams" HorizontalAlignment="Center" Width="1787" Margin="0,48,0,10" IsItemClickEnabled="True" ItemClick="Event_Overview_Teams_ItemClick" SelectionMode="None">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <Grid Width="900">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="*" />
                                        <ColumnDefinition Width="*" />
                                    </Grid.ColumnDefinitions>
                                    <TextBlock x:Name="TeamName" Grid.Column="0" Text="{Binding TeamName}" TextWrapping="Wrap" />
                                    <TextBlock x:Name="TeamID"   Grid.Column="1" Text="{Binding TeamID}" TextWrapping="Wrap" />
                                    <TextBlock x:Name="TeamNumber" Grid.Column="2" Text="{Binding TeamNumber}" TextWrapping="Wrap" />
                                    <TextBlock x:Name="TeamClass" Grid.Column="3" Text="{Binding TeamClass}" TextWrapping="Wrap" />
                                    <TextBlock x:Name="DeliverTime" Grid.Column="4" Text="{Binding DeliverTime}" TextWrapping="Wrap" />
                                    <!--<TextBlock x:Name="TeamPresent" Grid.Column="5" Text="{Binding TeamPresent}" TextWrapping="Wrap" />-->
                                    <ToggleSwitch x:Name="TeamPresent" Grid.Column="5" IsOn="{Binding TeamPresent}" Toggled="TeamPresent_Toggled"/>
                                </Grid>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>

Большое спасибо заранее

1 Ответ

0 голосов
/ 18 февраля 2020

Когда вы запускаете событие TeamPresent_Toggled , вы можете получить модель представления, которая связана с текущим элементом, получив DataContext ToggleSwitch. Затем измените свойство (например, TeamID) из полученной модели представления.

private void TeamPresent_Toggled(object sender, RoutedEventArgs e)
{
    var toggle = (ToggleSwitch)sender;
    var dataContext = toggle.DataContext;
    MyViewModel dataItem = (MyViewModel)dataContext;
    dataItem.TeamID = "MyNewTeamId";
    ......
}
...