내가 놓친 것이 있을지 모르지만 나는 이미 이걸 가지고 머리를 쳤습니다.CollectionViewSource 초기화는 목록 상자의 SelectionChanged를 발생시킵니다.
내가 정의한 CollectionViewSource :
<CollectionViewSource x:Key="packagesViewSource" d:DesignSource="{d:DesignInstance my:Package, CreateList=True}" />
및 목록 상자 : 또한
<ListBox Name="lstbPackages"
SelectionChanged="lstbPackages_SelectionChanged"
ItemsSource="{Binding Source={StaticResource packagesViewSource}}"
DisplayMemberPath="Name"
SelectedValue="{Binding Path=PackageId, UpdateSourceTrigger=Explicit}"
SelectedItem="{Binding Path=Package}"
SelectedValuePath="IdPackage"
/>
, 내가 가진 코드 숨김 packagesViewSource 초기화 :
private IQueryable<Packages> GetPackagesQuery()
{
IQueryable<Package> query = dc.PackagesList;
// Returns an ObjectQuery.
return query;
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
...
packagesViewSource =((System.Windows.Data.CollectionViewSource)(this.FindResource("packagesViewSource")));
queryPackages = this.GetPackagesQuery();
packagesViewSource.Source = queryPackages.ToList();
...
}
그리고 라인
당신이 거기lstbPackages.SelectedItem != null
를 추측 할 수로
packagesViewSource.Source = queryPackages.ToList();
이벤트를
private void lstbPackages_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
...
}
을 포함합니다.
내가 뭘 잘못 했니?
는 당신이 요구하는지 모르겠지만, 당신은'ListBox' 어떤 항목이 선택하지 않는로 초기화하고, 당신은 당신의 정의에서'SelectedItem'를 설정하는, 그래서'ListBox'가 초기화 할 때입니다 'SelectedItem'을 설정하기 위해'SelectionChanged' 이벤트를 실행하십시오 – Rachel