0

次のコードを使用した ListView が機能しない理由を知っている人はいますか? Snoop でチェックアウトしたところ、ItemsSource は問題ないようです (Snoop を起動すると、ListView に MyViewModel.MyCollection が表示されますが、Visual Studio でデバッグすると何も表示されませんか?)

ありがとうございました!

PS: MainWindow.xaml.cs には 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>

ビューモデルは次のようになります。

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"); }
    }
}

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

public class MyDate
{
    public DateTime CalcDate { get; set; }
}
4

2 に答える 2

1

誰が設定しMyCollectionますか?変更通知を提供していないため、バインディングは変更されたことを知りません。への変更:

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

または、さらに良いことに、読み取り専用にします。

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

public ICollection<MyDate> MyCollection
{
    get { return _myCollection; }
}
于 2009-08-04T15:09:33.890 に答える
0

Visual Studio の [出力] ウィンドウを確認すると、発生している可能性のある DataBinding エラーが表示され、問題の解決に役立つ場合があります。

于 2009-08-04T15:13:58.470 に答える