14

私は単純なウィンドウを持っています:

<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>

関連するコードビハインド:

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

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

    // Other code ...
}

ウィンドウコンストラクターで次のバインディングを記述した場合:

lvItems.ItemsSource = Activities;

次に、要素を追加または削除すると、ListView が自動的に更新されActivitiesます。

XAML でバインドをどのように記述すればよいですか?
私はこれを試しましたが、うまくいきません:

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

これを XAML で機能させるにはどうすればよいですか?

4

4 に答える 4

16

@JesseJamesの言うことは真実ですが、十分ではありません。

あなたが入れなければならない

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

なので

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

バインディングは次のようになります。

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

よろしく、

于 2013-05-22T14:29:08.980 に答える
14

他の人が答えたように DataContext をこれDataContextに設定する必要がありますが、次の方法でも設定できますxaml

<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 Path=Activities}" />
    </Grid>
</Window>
于 2013-05-22T14:27:42.867 に答える
3

DataContext = thisWindow コンストラクターで設定します。

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

その後、必要に応じてアクティビティをバインドできます。<ListView x:Name="lvItems" ItemsSource="{Binding=Activities}" />

于 2013-05-22T14:25:11.627 に答える
2

これは、ビューのデータ コンテキストが設定されていないためです。コードビハインドでこれを行うことができます:

this.DataContext = this;

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

MVVM 設計パターンを調査し、MVVM フレームワークを使用することで、はるかに良い結果が得られます。

于 2013-05-22T14:26:53.237 に答える