0

ItemsControlにバインドしようとしているObservableコレクションがあります。以下は私のコードのスニペットです。

クラスSample.ViewModel:

//Observabale collection getter/setter property
public ObservableCollection<SQuestion> SList
{
    get
    {             
        return _sList;
    }
    set
    {
        if (_sList == value)
            return;
        _sList = value;
        if(PropertyChanged!=null)
            PropertyChanged(this, new PropertyChangedEventArgs("ListOfSamples"));
    }
}

.xamlコード:
View / Mainwindow.xaml

<ItemsControl Height="422" HorizontalAlignment="Left" Margin="12,12,0,0" Name="listBox1" VerticalAlignment="Top" Width="751" ItemsSource="{Binding SList}" ItemTemplate="{StaticResource perItemTemplate}"/>

上記のコードでは、ItemsSourceバインディングを指定していますが、アプリケーションを実行すると、リストがItemsControlに表示されず、すべてが空白で表示されます。
ただし、.csコードビハインドからリストボックスにソースを割り当てようとするとのようlistBox1.ItemsSource = SListに、リストボックスにデータが入力され、期待どおりに機能します。
コードビハインドを使用せずにxamlから直接バインドできるようにするために、私が行っているBindingの上記の問題を誰かが指摘できますか?

4

2 に答える 2

0

これはうまくいくはずです。

コードビハインドでは:

public void MyInitialization()
{
    listBox1.DataContext = SList;
}

//Observabale collection getter/setter property
public ObservableCollection<SQuestion> SList 
{ 
    get 
    {              
        return _sList; 
    } 
    set 
    { 
        if (_sList == value) 
            return; 
        _sList = value; 
        if(PropertyChanged!= null)
            PropertyChanged(this, new PropertyChangedEventArgs("SList")); 
    } 
}

Xaml の場合:

<ItemsControl Height="422" HorizontalAlignment="Left"
              Margin="12,12,0,0" Name="listBox1" VerticalAlignment="Top"
              Width="751" ItemsSource="{Binding} 
              ItemTemplate="{StaticResource perItemTemplate}"/>
于 2012-07-04T10:22:19.260 に答える