Добрый вечер, подскажите пожалуйста, есть ListView:
<ListView x:Name="professions" MouseDoubleClick="professions_MouseDoubleClick">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="id" Text="{Binding Key}"/>
<TextBlock x:Name="val" Text="{Binding Value}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
и есть обработчик события:
private void professions_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
groupSostav.Items.Add("???");
}
При двойном клике нужно чтобы вот этот (Text="{Binding Value}") value добавлялся в ListBox groupsostav, не получается его получить, что нужно подставить в (groupSostav.Items.Add("???");) вместо "???" ?
В ListBox записи добавлены из конструктора вот так :
Dictionary<int, string> col1 = new Dictionary<int, string>()
{
{1, "Значение 1"},
{2, "Значение 2"},
{3, "Значение 3"}
};
foreach (var profList in col1)
{
professions.Items.Add(new Item { Key = profList.Key, Value = profList.Value });
}
}
public class Item
{
public int Key { get; set; }
public string Value { get; set; }
}
Если вы пытаетесь работать с байдингом, то вот вам пример на ваш случай, но без работы в MVVM, как это обычно принято.
XAML
<Canvas>
<ListView ItemsSource="{Binding ItemsForListView}"
SelectedItem="{Binding SelectedItemInListView}"
Height="100" Canvas.Left="24" Canvas.Top="33"
Width="215" MouseDoubleClick="ListView_MouseDoubleClick">
<ListView.View>
<GridView>
<GridViewColumn Header="н/п"
Width="30"
DisplayMemberBinding="{Binding Key}"/>
<GridViewColumn Header="Название"
Width="150"
DisplayMemberBinding="{Binding Value}"/>
</GridView>
</ListView.View>
</ListView>
<ListBox ItemsSource="{Binding ItemsForListBox}"
Height="180" Canvas.Left="323" Canvas.Top="40" Width="125">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Key}" Margin="5" />
<TextBlock Text="{Binding Value}" Margin="5" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Canvas>
CodeBehind
public partial class MainWindow : Window, INotifyPropertyChanged
{
/// <summary>
/// Реализация INotifyPropertyChanged
/// </summary>
public event PropertyChangedEventHandler PropertyChanged = delegate { };
/// <summary>
/// Коллекция для ListView
/// </summary>
public ObservableCollection<Item> ItemsForListView { get; set; }
/// <summary>
/// Элемент выбранный в ListView
/// </summary>
private Item _SelectedItemInListView;
public Item SelectedItemInListView
{
get { return _SelectedItemInListView; }
set
{
_SelectedItemInListView = value;
//сообщаем о том, что элемент изменился
PropertyChanged(this, new PropertyChangedEventArgs(nameof(SelectedItemInListView)));
}
}
/// <summary>
/// Коллекция для ListBox
/// </summary>
public ObservableCollection<Item> ItemsForListBox { get; set; }
public MainWindow()
{
InitializeComponent();
//подписываемся на событие загрузки окна
this.Loaded += MainWindow_Loaded;
}
/// <summary>
/// Событие загрузки окна
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
LoadLists();
//делаем кодбихайнд источником данных для своего XAML
this.DataContext = this;
}
/// <summary>
/// Заполнение списков
/// </summary>
private void LoadLists()
{
ItemsForListView = new ObservableCollection<Item>()
{
new Item() { Key = 1, Value = "Значение 1"},
new Item() { Key = 2, Value = "Значение 2"},
new Item() { Key = 3, Value = "Значение 3"}
};
ItemsForListBox = new ObservableCollection<Item>();
}
/// <summary>
/// Обработка события двойного клика мышью на ListView
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (SelectedItemInListView != null)
{
ItemsForListBox.Add(SelectedItemInListView);
}
}
}
public class Item
{
public int Key { get; set; }
public string Value { get; set; }
}
}
Получилось вот так:
private int _SelectedIndexInListBox;
public int SelectedIndexInListBox
{
get { return _SelectedIndexInListBox; }
set
{
_SelectedIndexInListBox = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(SelectedIndexInListBox)));
}
}
И вывод:
<GridViewColumn Header="№"DisplayMemberBinding="{Binding SelectedIndexInListBox}">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding SelectedIndexInListBox}"></TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
Ничего не выводит, а если создаю отдельный ТекстБокс (за пределами ListView), то когда тыкаю мышкой по элементам ListView к которому привязан, значение выводится (индекс того элемента который я выбрал).
Два варианта вывода сделал потому что тестил, не работает ни 1 из вариантов :(
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Заранее прошу прощения если вопрос кому-то покажется глупым и бессмысленным, но для меня он имеет смыслНеобходима функция которая на входе...
Это bodyphp Для вывода всех строчек с масива отвечает функция getPosts, она же и задает в ссылке id
Пожалуйста подскажите, что означает ошибка: