У меня проблема с ComboBox
, которая привязана к ObservableCollection
, и мне было интересно, может ли кто-нибудь указать на то, чего я не вижу.ComboBox SelectedItem не изменяется после очистки наблюдаемой коллекции
У меня есть ComboBox
, который связан с простым ObservableCollection<string>
. Также я связываю SelectedIndex
в привязке OneWay
к некоторому свойству.
В моем приложении я добираюсь до точки, где хочу очистить коллекцию и повторно заполнить ее разными данными и установить SelectedIndex
на новое значение. по какой-либо причине привязка SelectedIndex
не работает.
Я прилагаю немного репро проблемы:
public partial class Window1 : Window, INotifyPropertyChanged
{
private int j;
public event PropertyChangedEventHandler PropertyChanged;
public Window1()
{
InitializeComponent();
DataContext = this;
Tables = new ObservableCollection<string>();
}
public ObservableCollection<string> Tables { get; set; }
private int _TheIndex;
public int TheIndex
{
get { return _TheIndex; }
set
{
_TheIndex = value;
if (PropertyChanged != null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("TheIndex"));
}
}
}
private void aaaa(object sender, RoutedEventArgs e)
{
j = (j + 1)%10;
Tables.Clear();
for(int i = 0; i < 10 ; i++)
{
Tables.Add(i.ToString());
}
TheIndex = j;
}
}
XAML является:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<StackPanel>
<ComboBox x:Name="TablesCombobox"
ItemsSource="{Binding Tables}"
SelectedIndex="{Binding TheIndex, Mode=OneWay}"/>
<Button Content="asdasd" Click="aaaa"/>
</StackPanel>
</Grid>
</Window>
Любая причина, по которой вы не просто устанавливаете TablesCombobox.SelectedIndex в aaaa() вместо TheIndex? Не знаю, почему привязка не работает. –
Я просто копировал/вставлял ваш код для воспроизведения в VS2010 Express Beta 2 - и он работает без заминки ... –