У меня есть то, что должно быть действительно простым связыванием, но проблема, с которой я сталкиваюсь, заключается в том, что вместо отображения трех компаний (список_компаний - это список, в котором компания содержит идентификатор_компании для привязки), я вижу всплывающее окно только с first company_id в company_list. У меня есть другие привязки, которые, кажется, работают нормально, и в некоторых других случаях я вижу, что я использовал ItemSource вместо DataContext, но когда я использую это, я получаю «Коллекция Items должна быть пустой перед использованием ItemsSource». Я много раз искал простой ответ на этот вопрос в stackoverflow, msdn и в других местах и видел в основном действительно сложные решения, которые я не смог понять / применить.
Когда появляется мое окно, оно имеет:
CompanyA
где должно быть:
CompanyA
CompanyB
CompanyC
который является содержимым списка компании (да, проверено в отладчике). Предложения приветствуются! Код и XAML следуют.
ReadMasterCompanyList(); // populates a_state.company_list with 3 companies
// display company list dialog
CompanySelect cs_window = new CompanySelect();
cs_window.CompanyListView.DataContext = a_state.company_list;
// fails: cs_window.CompanyListView.ItemsSource = a_state.company_list;
cs_window.Show();
И XAML от CompanySelect:
<Grid>
<ListView IsSynchronizedWithCurrentItem="True"
x:Name="CompanyListView"
SelectionMode="Single" SelectionChanged="CompanyListView_SelectionChanged">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Height" Value="30"/>
</Style>
</ListView.ItemContainerStyle>
<ListViewItem Content="{Binding Path=company_id}"></ListViewItem>
</ListView>
</Grid>