我花了太多时间在这上面,找不到错误。也许我遗漏了一些非常明显的东西,或者我可能刚刚在winforms的wpf元素宿主中发现了一个bug。
我正在将ListView绑定到我的ProductListViewModel上的ObeServableList。
我正试图实现对ListView的搜索,一般的想法是用一个过滤后的新列表来更改ObservableList。
总之,ListView绑定代码如下所示:
<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上什么也没有发生。
我已经尝试了模式=twoway和其他绑定模式,似乎我无法让ListView订阅itemssource…
有人能帮我吗?我只是想忘记elemenhost,然后用winforms做它。
你好,丹尼尔