【发布时间】:2012-10-12 14:14:22
【问题描述】:
我很难将ListView 与另一个班级的ObservableCollection 绑定。
我的xml:
<ListView Height="117" HorizontalAlignment="Left" Margin="20,239,0,0" Name="lvResults" VerticalAlignment="Top" Width="759" ItemsSource="{Binding RuleSearch.FileMatches}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding FileName}"/>
<GridViewColumn Header="Size" Width="120" DisplayMemberBinding="{Binding DirectoryName}"/>
<GridViewColumn Header="Date" Width="120" DisplayMemberBinding="{Binding Size}"/>
<GridViewColumn Header="Full Path" Width="120" />
<GridViewColumn Header="Some Meaningless Data" Width="120" />
</GridView>
</ListView.View>
</ListView>
代码背后的 Xaml:
private Search _ruleSearch = new Search();
public Search RuleSearch { get { return _ruleSearch; }}
在搜索类中:
public ObservableCollection<Result> FileMatches { get; private set; }
请注意,更改是在新线程上进行的,如果有影响的话:
private void FindResultOnNewThreads()
{
FileMatches.Clear();
Parallel.ForEach(_fileList, file =>
{
foreach (Regex search in SearchTermList.Where(search => search.IsMatch(file)))
{
lock (FileMatches)
{
FileInfo fileInfo = new FileInfo(file);
FileMatches.Add(new Result
{
Attributes = fileInfo.Attributes,
DirectoryName = fileInfo.DirectoryName,
Extension = fileInfo.Extension,
FileName = fileInfo.Name,
FullNamePath = fileInfo.FullName,
Size = fileInfo.Length
});
}
}
});
}
结果类:
public class Result
{
public string FileName { get; set; }
public string DirectoryName { get; set; }
public string FullNamePath { get; set; }
public long Size { get; set; }
public string Extension { get; set; }
public FileAttributes Attributes { get; set; }
}
问题确实是,我正在自己学习 wpf,但实际上找不到 WPF 中数据绑定的规则集。我知道它需要属性和公共属性,除了我被卡住了。
【问题讨论】:
-
您说您遇到了困难,请具体说明问题所在。如果有的话,你在哪里设置 DataContext?
-
@BigDaddy,我以为我指定的问题是我无法绑定。我在 xaml 中绑定 DataContext:
ItemsSource="{Binding RuleSearch.FileMatches}"我什至尝试了几个不同的变体。一个在后面的代码中...