このバインディングが機能しないのはなぜですか?
<Window x:Class="S3PackageInstaller.MainWindow" x:Name="Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s3u="clr-namespace:S3PackageInstaller"
Icon="App.ico" Title="Sims 3 Package Installer" Height="480" Width="740">
<DockPanel LastChildFill="True">
<DockPanel DockPanel.Dock="Left" Width="200" VerticalAlignment="Stretch" LastChildFill="True"
Margin="20,20,0,20">
<!-- this is the binding that isn't working -->
<ListView Width="200" ItemsSource="{Binding ElementName=Window1, Path=InstalledPackages}">
<ListView.View>
<GridView>
<GridViewColumn Header="Installed Packages" DisplayMemberBinding="{Binding Filename}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<!-- snip -->
</Window>
関連するコード ビハインド:
public partial class MainWindow : Window
{
public ObservableCollection<object> InstalledPackages { get; private set; }
public MainWindow()
{
InitializeComponent();
InstalledPackages = new ObservableCollection<object>();
LoadInstalledPackages();
}
private void LoadInstalledPackages()
{
var installPath = Settings.Default.TargetDirectory;
var packages = System.IO.Directory.GetFiles(installPath, "*.package");
InstalledPackages.Clear();
foreach (string filename in packages)
InstalledPackages.Add(new { Filename = filename });
}
// snip...
}
プログラムを実行すると、ListView は空です。デバッグ時に、LoadInstalledPackages の実行後にコレクションにアイテムが含まれていることを確認しました。