当我在file.xaml.cs中使用指示器(x:name)时,它表明它是未知的
但是,当我在其他练习中执行另一个选择器时,它正常工作,并且很好地创建了事件。
<ContentPage.Content>
<StackLayout>
<ListView x:Name="viewRapport" ItemsSource="{Binding Rapports}"
HasUnevenRows="True"
ItemTapped="list_ItemTapped">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Vertical">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" HorizontalTextAlignment="Center" Text="{Binding Name}"/>
<Label Grid.Column="1" Text="{Binding Amount}" />
<Label Grid.Column="2" Text="{Binding AmountReimbursed}"/>
<Label Grid.Column="3" Text="{Binding Status}"/>
<Picker x:Name="ListR" Title="plus" Grid.Column="4" SelectedIndexChanged="ListRappor_SelectedIndexChanged">
<Picker.ItemsSource>
<x:String>Modifier</x:String>
<x:String>Supprimer</x:String>
</Picker.ItemsSource>
</Picker>
</Grid>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
这是选择器的事件
private void ListRappor_SelectedIndexChanged(object sender, EventArgs e)
{
var choix=ListR.Items[ListR.SelectedIndex];
switch(choix){
}
}
为了更好地理解问题,该事件中“ ListR”是未知的。
在此情况下无法访问,因为它是在DataTemplate
中定义的。如果要在事件处理程序中访问此Picker
,则可以使用sender参数对其进行访问。
这里是一个例子:
private void ListRappor_SelectedIndexChanged(object sender, EventArgs e)
{
var ListR = sender as Picker;
var choix=ListR.Items[ListR.SelectedIndex];
switch(choix){
}
}