【发布时间】:2016-10-03 17:54:34
【问题描述】:
我有一个ListView,它绑定到一个由viewModels 组成的ObservableCollection。
viewModel 如下所示:
public string Id{ get; set; }
public string Name{ get; set; }
public bool HasId
{
get { return !(String.IsNullOrEmpty(Id)); }
}
在前端 xaml 中:
<ListView x:Name="MyList" ItemsSource="{Binding MyList}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="{Binding Name" FontSize="Small"/>
<StackLayout Spacing="20">
<Entry Text="{Binding Id}"/>
<Button Text="Create Profile" IsEnabled="False">
<Button.Triggers>
<DataTrigger TargetType="Button" Binding="{Binding HasId}" Value="True">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</Button.Triggers>
</Button>
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Desired Result:当用户输入条目(绑定到Id)时,应该启用按钮。
实际结果:当用户输入条目时,什么也没有发生(我猜是因为ObservableCollection 没有看到viewmodel 内的变化)
注意:当我在ObservableCollection 中添加/删除元素时,视图会更新(如预期的那样)。
非常感谢任何建议/想法!
【问题讨论】:
-
你的 ViewModel 类需要实现 INotifyPropertyChanged
-
@Jason 谢谢!第一次看文档的时候没看懂,现在明白了。
标签: listview xamarin.forms observablecollection