2013-05-22 7 views
7

私はシンプルな窓があります。私は、ウィンドウコンストラクタに以下の結合を記述する場合ItemsControl.ItemsSourceをXAMLのプロパティでバインドするにはどうすればよいですか?

public partial class WinActivityManager : Window 
{ 
    private ObservableCollection<Activity> Activities { get; set; } 

    public WinActivityManager() 
    { 
     Activities = new ObservableCollection<Activity>(); 
     InitializeComponent(); 
    } 

    // Other code ... 
} 

<Window x:Class="WinActivityManager" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <ListView x:Name="lvItems" /> 
    </Grid> 
</Window> 

そして背後に関連するコードを

lvItems.ItemsSource = Activities; 

その後、私のリストビューがありますActivitiesから要素を追加または削除すると自動的に更新されます。

XAMLでバインディングを書き込む方法を教えてください。
私はこれを試してみましたが、それは動作しません:

<ListView x:Name="lvItems" ItemsSource="{Binding=Activities}" /> 

私はXAMLでこの作業を行うにはどうすればよいですか?

+0

あなたは 'のItemsSource = {結合活性を試してみました} '? – hattenn

答えて

12

何@JesseJamesが言うことは事実であるが、十分ではありません。あなたは

public ObservableCollection<Activity> Activities { get; set; } 

として

private ObservableCollection<Activity> Activities { get; set; } 

を配置する必要がありますし、結合があるべき

<ListView x:Name="lvItems" ItemsSource="{Binding Path=Activities}" /> 

よろしく、

+3

この作業は、DataContextを設定するためには、@Farhad Jabiyevのような書き方が良いと思います。 –

2

WindowコンストラクタにDataContext = thisを設定します。

public WinActivityManager() 
{ 
    Activities = new ObservableCollection<Activity>(); 
    DataContext = this; 
    InitializeComponent(); 
} 

次にあなたが欲しいなどの活動をバインドすることができます:<ListView x:Name="lvItems" ItemsSource="{Binding=Activities}" />

1

ビューのデータコンテキストが設定されていないためです。あなたは、背後にあるコードでこれを行うことができ、次のいずれか

this.DataContext = this; 

また、あなたが設定することができ、それ自体にウィンドウのDataContext - DataContext="{Binding RelativeSource={RelativeSource Self}}"

あなたがMVVM design pattern、およびusing an MVVM frameworkを調査けれどもオフはるかに良いです。

11

あなたが他の人が答えのようこのへのDataContextを設定する必要がありますが、あなたはまた、xamlを通じてDataContextを設定することができます。

<Window x:Class="WinActivityManager" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     DataContext="{Binding RelativeSource={RelativeSource Self}}"> 
    <Grid> 
     <ListView x:Name="lvItems" ItemsSource="{Binding=Activities}" /> 
    </Grid> 
</Window> 
関連する問題