Mir*_*rja 2 c# xaml xamarin xamarin.forms
我有一个带有ItemTemplate的Xamarin.Forms ListView.ItemTemplate包含名为"myEntry"的条目控件.每次选择一个项目时,我都想将焦点设置到输入控件.在我的xaml.cs ListView_ItemSelected事件中,listView.FindByName("myEntry")方法始终返回null:
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var lv = sender as ListView;
if (lv != null)
{
var entry = lv.FindByName<Entry>("myEntry");
if (entry != null)
entry.Focus();
}
}
Run Code Online (Sandbox Code Playgroud)
XAML:
<ListView ItemsSource="{Binding ArtikelListe}"
Header=""
HasUnevenRows="True"
ItemSelected="ListView_ItemSelected"
ItemTapped="ListView_ItemTapped">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250*"/>
<ColumnDefinition Width="150*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="75*"/>
<ColumnDefinition Width="75*"/>
<ColumnDefinition Width="250*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Text="{Binding Bezeichnung}"/>
<Label Grid.Column="1" Text="{Binding ArtikelNr}"/>
<Label Grid.Column="2" Text="{Binding KatalogNr}"/>
<Label Grid.Column="3" Text="{Binding Lagerplatz}"/>
<Label Grid.Column="4" Text="{Binding Mengeneinheit}"/>
<Label Grid.Column="5" Text="{Binding Sollbestand}"/>
<Entry x:Name="myEntry" Grid.Column="6" VerticalOptions="StartAndExpand" Text="{Binding AktuellerBestand}"/>
<Label Grid.Column="7" Text="{Binding Kommentar}"/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我也尝试从我的xaml中找到其他控件,但它总是为null.我做错了什么或这是一个错误?
警告:您不应该使用FindByName<>任何代码.而你正在尝试做的事情将使用Binding完成.但无论如何我还是要回答.
myEntry是ListView单元格模板的一部分.试图找到lv.FindByName<Entry>("myEntry")返回null,因为另一个选择将返回myEntry所有单元格.
为什么会回来null?因为你的不同NameScope.Xaml解析器NameScope在文件中为每个Xaml根对象创建一个,然后为DataTemplates 创建不同的NameScope.
如果要关注myEntry活动单元格.您必须找到所选的单元格,然后在单元格上使用FindByName.
但是,在一个模板化的控制中,没有简单的方法来获得实际细胞的钩子.这就是为什么我带着警告开始这个答案的原因.再读一遍.
| 归档时间: |
|
| 查看次数: |
3745 次 |
| 最近记录: |