【发布时间】:2011-02-22 23:13:38
【问题描述】:
我在这方面花了太多时间,却找不到错误。也许我遗漏了一些非常明显的东西,或者我刚刚在 Winforms 的 WPF Element Host 中发现了一个错误。
我将 ListView 绑定到位于我的 ProductListViewModel 上的 ObeservableList。
我正在尝试使用一般的想法来实现对 ListView 的搜索,以仅使用过滤后的新列表更改 ObservableList。
反正ListView的Binding代码是这样的:
<ListView ItemsSource="{Binding Path=Products}" SelectedItem="{Binding Path=SelectedItem}" SelectionMode="Single">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ViewModel 代码是最普通的:
private ObservableCollection<ProductViewModel> products;
public ObservableCollection<ProductViewModel> Products
{
get { return products; }
private set
{
if (products != value)
{
products = value;
OnPropertyChanged("Products");
}
}
}
现在问题出在这里:一旦我调试到我的 OnPropertyChanged 方法,我可以看到没有订阅 PropertyChanged 事件(它为空),所以 UI 上什么也没有发生。 我已经尝试过Mode=TwoWay和其他Binding模式,似乎无法让ListView订阅ItemsSource...
谁能帮我解决这个问题?我即将忘记 ElemenHost 并在 Winforms 中进行操作
问候丹尼尔
【问题讨论】:
标签: c# .net wpf data-binding