Pergunta

Alguém sabe por que meu ListView com o seguinte código não está funcionando? Eu verifiquei com Snoop e o Itens Source parece estar bem (e quando eu começo Snoop, o ListView me exibe o myViewModel.mycollection, mas ao depurar com o Visual Studio não me mostra nada?)

Obrigada!

PS: mainwindow.xaml.cs tem o datacontext = mainViewModel

    <ListView Grid.Row="1" Margin="38,50,0,168" HorizontalAlignment="Left" Name="listViewSelectDate" Width="105"
              ItemsSource="{Binding Path=MyViewModel.MyCollection}" 
              SelectedItem="{Binding SelectedDate}" IsSynchronizedWithCurrentItem="True">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Date" DisplayMemberBinding="{Binding Path=CalcDate}"/>
            </GridView>
        </ListView.View>
    </ListView>

O ViewModel se parece com o seguinte:

class MainViewModel : ViewModelBase
{
    public SummaryViewModel MyViewModel
    {
        get { return _myViewModel; }
        set { _myViewModel = value; RaisePropertyChanged("MyViewModel"); }
    }
    public MyDate SelectedDate
    {
        get { return _selectedDate; }
        set { _selectedDate = value; RaisePropertyChanged("SelectedDate"); }
    }
}

e

public class SummaryViewModel : ViewModelBase
{
    public ObservableCollection<MyDate> MyCollection { get; set; }
}

e

public class MyDate
{
    public DateTime CalcDate { get; set; }
}
Foi útil?

Solução

Quem define MyCollection? Não está fornecendo notificação de mudança, portanto, a ligação não sabe que foi alterada. Mudar para:

private ObservableCollection<MyDate> _myCollection;
public ObservableCollection<MyDate> MyCollection
{
    get { return _myCollection; }
    set
    {
        _myCollection = value;
        OnPropertyChanged("MyCollection");
    }
}

Ou, melhor ainda, torne-o somente leitura:

private readonly ICollection<MyDate> _myCollection = new ObservableCollection<MyDate>();

public ICollection<MyDate> MyCollection
{
    get { return _myCollection; }
}

Outras dicas

Procure na janela de saída do Visual Studio, ele mostrará todos os erros de banco de dados que você pode estar obtendo, o que pode ajudá -lo a resolver o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top