У меня есть ListView, для которого ItemSource установлен в мою пользовательскую коллекцию.Почему сбой в привязке данных в ListView (WPF)?
Я определил GridView CellTemplate, который содержит поле со списком, как показано ниже:
<ListView
MaxWidth="850"
Grid.Row="1"
SelectedItem="{Binding Path = SelectedCondition}"
ItemsSource="{Binding Path = Conditions}"
FontWeight="Normal"
FontSize="11"
Name="listview">
<ListView.View>
<GridView>
<GridViewColumn
Width="175"
Header="Type">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox
Style="{x:Null}"
x:Name="TypeCmbox"
Height="Auto"
Width="150"
SelectedValuePath="Key"
DisplayMemberPath="Value"
SelectedItem="{Binding Path = MyType}"
ItemsSource="{Binding Path = MyTypes}"
HorizontalAlignment="Center" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</ListView>
public MyType : INotifyPropertyChanged
{ строку Key; строка Значение;
public string Key { get { return _key; }
set { _key = value; this.OnPropertyChanged("Key"); } }
public string Value { get { return _value; }
set { _value = value; this.OnPropertyChanged("Value"); } }
public MyType()
{
}
public MyType (string key, string value)
{
_key = key;
_value = value;
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
public void MoveUpExecuted()
{
int oldIndex = this.Conditions.IndexOf(_selectedCondition);
//Check if the selected item is not the first item
if (oldIndex != 0)
{
int newIndex = oldIndex - 1;
this.Conditions.Move(oldIndex, newIndex);
}
}
Мой заказ коллекция является ObservableCollection.
У меня есть две кнопки - Move Up и Move Down сверху элемента управления списком. Когда пользователь нажимает кнопку «Вверх» или «Вниз», я вызываю метод Move Observable Collection.
Но когда я перехожу вверх и перемещаюсь по строкам, то выбранный индекс комбинированного поля равен -1.
Я установил, что selectedItem не равен нулю при выполнении команд Move Up и Move Down.
Пожалуйста, помогите !!
Спасибо за ответ. Извините за неправильные имена ObservableCollection, его метод Move в ObservableCollection, который перемещает объект в коллекции от oldindex к новому индексу –
А я вижу. Итак, просто чтобы быть ясным, вы хотите переместить объект сам, как в порядке изменения элементов, а не переместить выделение, как я думал? – ThomasAndersson
Да, я выбрал выбранный элемент ListView текущему перемещаемому объекту, который дает выбор в списке. –