У меня есть класс с именем Layer2Infoсвязывание ListBox с ObservableCollection в WPF
public class Layer2Info
{
public ObservableCollection<totalAvailablePorts> availableClientPorts = new ObservableCollection<totalAvailablePorts>();
}
totalAvailablePorts Класс
public class totalAvailablePorts : INotifyPropertyChanged
{
public int _portID;
public Boolean _isSelected;
public int portID
{
get { return _portID; }
set { _portID = value; NotifyPropertyChanged("portID"); }
}
public Boolean isSelected
{
get { return _isSelected; }
set { _isSelected = value; NotifyPropertyChanged("isSelected"); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public override string ToString()
{
return string.Format("{0}", portID);
}
}
Создание данных в availableClientPorts является:
for (int i = 1; i <= 3; i++)
{
totalAvailablePorts newPort = new totalAvailablePorts();
newPort.portID = i;
newPort.isSelected = false;
layer2InfoConfig.availableClientPorts.Add(newPort);
}
сейчас , в моем MainWindow я привязываю ListBox к Layer2Info.availableClientPorts следующим образом:
clientPortsList.ItemsSource = layer2InfoConfig.availableClientPorts;
и последняя моя XAML:
<ListBox x:Name="clientPortsList" SelectionMode="Extended" DisplayMemberPath="{Binding Path=portID}" SelectedValuePath="{Binding Path=isSelected}" Height="50">
</ListBox>
Теперь я в состоянии увидеть все порты (1-3) в ListBox, но то, что я хочу сделать, это то, что на каждом которую я выбираю в ListBox, я хочу, чтобы значение isSelected в доступныхClientPorts изменилось на true, и я не знаю, с чего начать. Любые предложения?
Отличное решение, работало как шарм! – amirm