Я просмотрел несколько связанных ответов и определил, что могу программно очистить выбор, установив lstData.SelectedIndex = -1;Однако, когда я делаю это сразу после установки контекста данных при запуске, он почему-то никогда не работает и настраивается на выбор первого элемента в списке.
Я также попытался добавить параметр в XAML, и -1на самом деле это значение по умолчанию Visual Studio, хотя на самом деле его нет в XAML, если вы его не установите.Т.е.:
<ListView Margin="6,6,6,203"
IsSynchronizedWithCurrentItem="True"
x:Name="lstData"
ItemsSource="{Binding}"
SelectionChanged="lstData_SelectionChanged"
HorizontalContentAlignment="Right"
ItemContainerStyle="{StaticResource ItemContStyle}"
SelectedIndex="-1">
Но это также не имеет никакого эффекта.
Кроме того, интересно, если я добавлю lstData.SelectedIndex = 3;в моем методе LoadData он НАЧИНАЕТСЯ установить с выбранным третьим членом.
Это мой соответствующий код загрузки окна:
public Window1()
{
InitializeComponent();
// Set start and end dates to day after tomorrow, and
// the next day, by default:
StartDate = DateTime.Now.AddDays(1);
EndDate = StartDate.AddDays(2);
txtStartDate.Text = StartDate.ToShortDateString();
txtEndDate.Text = EndDate.ToShortDateString();
LoadData();
}
public void LoadData()
{
App.RefreshMembers();
App.CalculateNeededMeals(StartDate, EndDate);
// Bind the ListBox to our ObserveableCollection
LayoutRoot.DataContext =
App.db.PFW_Members.OrderBy("FullName",true).OrderBy("CancelDate",true);
lstData.SelectedIndex = -1;
}
И LoadData () вызывается при других обстоятельствах и вВ этом случае он отменяет выбор.Просто не первый раз окно загружается.Как будто есть некоторый поток инициализации, который на самом деле не закончен и идет и устанавливает выбор в 0, если он равен -1 при запуске.
О, да, у меня есть обработчик изменения выбора, но он не 'изменить выбор, например:
private void lstData_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (lstData.SelectedItem == null)
{
btnReactivate.IsEnabled = false;
btnDeactivate.IsEnabled = false;
}
else
{
if (((PFW_Member)lstData.SelectedItem).CancelDate == null)
{
btnReactivate.IsEnabled = false;
btnDeactivate.IsEnabled = true;
}
else
{
btnReactivate.IsEnabled = true;
btnDeactivate.IsEnabled = false;
}
}
}
Есть ли какой-нибудь способ заставить его действительно ждать загрузки, а затем делать что-то, или устанавливать задержанное событие или что-то, или у кого-то есть знания или теорияо том, что здесь может происходить?
Спасибо за любые советы!