Вечера все, я столкнулся с проблемой, с SelectionChanged (TabControl) события вызова до LostFocus (TextBox) события.приоритета события: LostFocus вызывается после SelectionChange
Это проблема, так как SelectionChanged срабатывает при смене вкладок, что стажер сбрасывает (TabControl> TabItem> ListView) ListView.SelectedIndex до -1.
В текстовом поле используется LostFocus для обновления/проверки его текстового поля, которые зависят от SelectedIndex. Текст в текстовом поле сохраняется/извлекается из List<string>
, и, поскольку индекс изменен, список выходит из пределов.
Я огляделся, устал от нескольких вещей и «взломал» подход, который на самом деле не помог.
<TabControl SelectionChanged="SelectionChanged_Tab"
<TabItem .../>
<TabItem .../>
</TabControl>
<Grid>
<Label .../>
<TextBox Name="Name" LostFocus="Lost_Focus" .../>
</Grid>
Код:
private void SelectionChanged_Tab(object sender, SelectionChangedEventArgs e)
{
if (e.Source is TabControl)
{
ListView1.SelectedIndex = -1;
ListView2.SelectedIndex = -1;
}
}
private void Lost_Focus(object sender, RoutedEventArgs e)
{
TextBox textbox = sender as TextBox;
int Index = ListView.SelectedIndex;
if (string.IsNullOrEmpty(textbox.Text) || textbox.Text == "0")
{
textbox.Text = "0";
}
switch (textbox.Name)
{
case "Name":
SomeList[Index].AProperty = textbox.Text;
break;
}
}