У меня есть пользовательский ListBox с несколькими колонками на один пунктПользовательские ListBox в WPF
<ListBox Name="UserListBox" Loaded="GetUsers_OnLoad" SelectionChanged="UserSelected">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel Name="UserDockPanel" Margin="4">
<TextBlock Name="UsernameTextBlock" Text="{Binding Path=Username}"/>
<CheckBox Name="OneCheckBox" IsHitTestVisible="False" IsChecked="{Binding One}" />
<CheckBox Name="TwoCheckBox" IsHitTestVisible="False" IsChecked="{Binding Two}" />
<CheckBox Name="ThreeCheckBox" IsHitTestVisible="False" IsChecked="{Binding Three}" />
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
То, что я пытаюсь сделать, когда пользователь выбирает элемент, который можно разобрать отдельные значения для этого элемента (UsernameTextBlock, OneCheckbox, TwoCheckBox, ThreeCheckBox).
Я попытался выбрать, который выбрасывает ошибку, и выбор изменен, похоже, работает, но я не знаю, как получить отдельные значения для выбранного элемента.
Любое понимание будет оценено по достоинству.
UPDATE:
Вот код позади
private void UserSelected(object sender, RoutedEventArgs e)
{
var userListBox = FindName("UserListBox") as ListBox;
var selectedItem = userListBox.SelectedItem as ListBoxItem;
MessageBox.Show(selectedItem.Username);
}
В настоящее время я просто показывать сообщение всплывающее окно, чтобы показать, что я доступ к
UPDATE 2:
private void GetUsers_OnLoad(object sender, RoutedEventArgs e)
{
_outreachAuths = _outreachTableAdapter.GetOutreachAuths();
var users = new List<UserItem>();
foreach (DataRow row in _outreachAuths.Rows)
{
users.Add(new UserItem() { Username = row.ItemArray[0].ToString(), One = false, Two = true, Three = ((row.ItemArray[2].ToString() == "1"))});
}
var userList = sender as ListBox;
if (userList != null) userList.ItemsSource = users;
}
Не могли бы вы оставить код codebehind/ViewModel, который посвящен событию SelectionChanged? – goobering
@goobering Я добавил код позади – Chris
Почти с этим. Можете ли вы опубликовать код, который вы используете, чтобы заполнить ListBox элементами? – goobering