J'implémente une zone de liste, lorsque je sélectionne un élément dans la zone de liste, il apparaît sur un bloc de texte "MiniTextBlock", mais je veux quand le texte est modifié manuellement ou texte n'est pas égal à l'élément sélectionné dans la zone de liste, cet élément sélectionné doit être désélectionné dans la zone de liste. Tout semble correct, mais il est désélectionné même si le texte Textblock et l'élément sélectionné sont identiques.Élément sélectionné Toujours désélectionner (C#)
Codes échantillon complet
XAML
<StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Name="MiniTextBlock" Text="35" FontSize="50" VerticalAlignment="Top" HorizontalAlignment="Center"/>
<ListBox Name="FavoritesListBox" VerticalAlignment="Center">
<ListBoxItem>
<TextBlock Text="36" FontSize="30"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="35" FontSize="30"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="34" FontSize="30"/>
</ListBoxItem>
</ListBox>
</StackPanel>
C#
public MainPage()
{
this.InitializeComponent();
DispatcherTimer timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(0.4) };
timer.Tick += delegate (object sender, object e)
{
var selectedItem = FavoritesListBox.SelectedItem;
if (selectedItem != null && selectedItem.ToString() != MiniTextBlock.Text)
{
FavoritesListBox.SelectedIndex = -1;
}
};
timer.Start();
}
DE SORTIE
Probablement le fait que vous avez défini l'indice, les résultats dans le fait que vous déclenchez à nouveau l'événement, et que 'SelectedItem' est maintenant' null '. –
Je pense que lors de votre changement d'événement, la valeur ddl est effacée. Alternativement, vous pouvez vérifier cela avant votre condition. if (! string.IsNullorEmpty (FavoritesListBox.SelectedItem.ToString())) {if (FavoritesListBox.SelectedItem.ToString()! = MiniTextBLock.Text) { FavorisListBox.SelectedIndex = -1; }} – Deepak
peut être possible parce que je l'insère dans DispatcherTimer donc il va vérifier si itemchanged dans le bloc de texte ou pas, comment puis-je traiter –