所以我试图设计一个列表视图,其中每个项目都有一个复选框,绑定到MVVM Light中的bool属性。我有一切绑定和正常工作,但现在我想添加一个“全选”和“选择无”按钮“。
列表视图
<ListView SelectionMode="None" ItemsSource="{x:Bind ViewModel.Campuses, Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Campus">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<CheckBox IsChecked="{x:Bind selected, Mode=TwoWay}" Content="{x:Bind Name}" x:Name="checkBox"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
代码
private ObservableCollection<Campus> _campuses { get; set; }
public ObservableCollection<Campus> Campuses
{
get
{
return _campuses;
}
set
{
_campuses = value;
RaisePropertyChanged("Campuses");
}
}
因此绑定工作正常并自行检查框会更改对象中保存的值。当我尝试以编程方式更改这些内容时,UI不会更新,只会更新后面的代码。
我想怎么做
public void SelectAll()
{
foreach (var item in Campuses)
{
item.selected = true;
}
RaisePropertyChanged("Campuses");
}
目前有效
public void SelectNone()
{
List<Campus> old = Campuses.ToList<Campus>();
foreach (var item in old)
{
item.selected = false;
}
Campuses = new ObservableCollection<Campus>(old);
}
有没有办法更改ObservableCollection
中的所有值,并且在ListView中更新对象中的值而不必完全重新分配ObservableCollection
我也绑定了?
非常感谢!
答案 0 :(得分:1)
您需要注意POST **************.wsdl HTTP/1.1
Host: ************************
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.6.31
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 989
仅在每个绑定元素都实现了DataBinding
接口时才有效。
意思是,如果您将复选框绑定到INotifyPropertyChanged
类的Selected
属性,则还需要将Campus
添加到INotifyPropertyChanged
类本身。
当您更改Selected属性的值时,它将自动在UI中反映此更改。
代码解决方案 我将以下内容添加到校园课程中以解决问题:
Campus