0
내 페이지에 이상한 동작이 있습니다.Xamarin.forms : 한 문자를 입력 한 후 초점이 맞지 않습니다.
내 항목에 초점을 맞추고 하나의 char을 입력하면 이벤트가 꺼지고 (새 항목 만들기) 단어의 끝을 입력 할 시간이 없습니다.
작은 정밀도를 내 DataTemplate을 단지 하나 개의 항목으로, 내가 도움을
THX (현재 항목이 비어 있지 않은 경우 새 항목을 만들) 내 말과 예상되는 동작의 작업을 입력 할 수있는 시간이, 내가 돈 ' t 문제를
xaml.page
<ListView SeparatorVisibility="None" HasUnevenRows="True" x:Name="listevisible" ItemsSource="{Binding ChirurgieList}">
<ListView.ItemTemplate>
<DataTemplate>
<local:Chirurgie>
<StackLayout x:Name="{Binding IdEntry}">
<StackLayout Orientation="Horizontal">
<Frame BackgroundColor="{StaticResource Leviolet}" Padding="2" HasShadow="False" HorizontalOptions="FillAndExpand" InputTransparent="True">
<Entry Text="{Binding Chir}"
x:Name="{Binding IdEntry}"
ClassId="{Binding IdEntry}"
Keyboard="Text"
Placeholder="(vide)"
Style="{StaticResource Poursaisi}"
FontSize="Medium"
BackgroundColor="#f1f0f0"
HorizontalTextAlignment="Start"
Focused="Entry_Focusedchir"
Unfocused="Saisichir_Unfocused"/>
</Frame>
<Frame BackgroundColor="{StaticResource Leviolet}" Padding="2" HasShadow="False" WidthRequest="60" >
<Entry Text="{Binding Annee}"
x:Name="{Binding Iddate}"
ClassId="{Binding Iddate}"
Keyboard="Numeric"
Placeholder="(vide)"
Style="{StaticResource Poursaisi}"
FontSize="Medium"
BackgroundColor="#f1f0f0"
HorizontalTextAlignment="Center"
Focused="Date_focus"
Unfocused="Date_Unfocus"/>
</Frame>
<StackLayout ClassId="{Binding IdEntry}"
Orientation="Horizontal"
HorizontalOptions="End"
WidthRequest="27" >
<Image Source="{StaticResource effacement}" WidthRequest="20"/>
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
</Image.GestureRecognizers>
<Image/>
</StackLayout>
</StackLayout>
<BoxView HeightRequest="5"/>
</StackLayout>
</local:Chirurgie>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
및 C# 코드를 이해
public partial class Page6 : ContentPage
{
public ObservableCollection<Chirurgie> listchir = new ObservableCollection<Chirurgie>();
public string AVsaisi;
public int compteur = 0;
public Page6()
{
InitializeComponent();
foreach (var s in (Array)Application.Current.Resources["AtcdChir"])
{ listevisible.ItemsSource = CreateItems(((Chirurgie)s).Chir, ((Chirurgie)s).Annee);}
}
//################### UNFOCUS #######################
private void Saisichir_Unfocused(object sender, FocusEventArgs e)
{
//on definit l'index de l'item
int indexCh = 25;
foreach (var item in ChirurgieList)
{
if (((Entry)sender).ClassId == item.IdEntry.ToString())
{ indexCh = ChirurgieList.IndexOf(item); }
}
//-----------------------------
// zone de saisi est vide
if (string.IsNullOrWhiteSpace(((Entry)sender).Text))
{
// elle l'était déja
if(ChirurgieList[indexCh].champsvide == true)
{ } // on ne fait rien
// elle etait pleine
else
{
//on la supprime
ChirurgieList.RemoveAt(indexCh);
}
}
// zone de saisi est pleine
else
{
// elle l'était déja
if (ChirurgieList[indexCh].champsvide == false)
{
// on ne fait rien sauf mettre a jour les valeurs
//ChirurgieList[indexCh].Chir = ((Entry)sender).Text;
((Entry)sender).Unfocus();
}
//et elle était vide
else
{
ChirurgieList[indexCh].champsvide = false;
ChirurgieList[indexCh].Chir = ((Entry)sender).Text;
listevisible.ItemsSource = CreateItems(string.Empty, string.Empty);
} }
public ObservableCollection<Chirurgie> CreateItems(string lachir, string lanee)
{
var items = ChirurgieList;
var uniqueID = compteur;
ChirurgieList.Add(new Chirurgie() {IdEntry = uniqueID, Chir = lachir, Iddate = "A" + uniqueID, Annee = lanee, champsvide=true });
compteur++;
return items;
}
public class Chirurgie
{
public string Chir { get; set; }
public int IdEntry { get; set; }
public string Iddate { get; set; }
public string Annee { get; set; }
public bool champsvide { get; set; }
}
두 엔트리를 뒤집 으면 동작이 바뀌므로 각 엔트리에 대해 고유 한 식별자가없는 연결이 있어야한다고 생각합니다. 확실하지 않습니다.