1

我有一个 MultiselectList 控件(来自 SL 工具包),其中有一个带有复选框的数据模板。这是我拥有的 xaml 代码:

<toolkit:MultiselectList x:Name="BankMultiSelectList" ItemTemplate="{StaticResource CustomItemTemplate}"/>

和数据模板:

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="CustomItemTemplate">
        <CheckBox x:Name="BankCheckBox" Content="{Binding Path=Name}" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}"/>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

绑定正在成为银行类中的成员,如下所示:

public class Bank
{
    public Bank() { }

    public Bank(string name)
    {
        this.Name = name;
    }

    public string Name { get; set; }
    public bool IsSelected { get; set; }

    public List<Bank> GetBanks()
    {
        return new List<Bank>()
        {
            new Bank("Eurobank"),
            new Bank("Millennium Bank"),
            new Bank("Attica Bank"),
            new Bank("Ταχυδρομικό Ταμιευτήριο"),
            new Bank("Alpha Bank"),
            new Bank("Τραπεζα Κύπρου"),
            new Bank("Hellenic Bank"),
            new Bank("Probank"),
            new Bank("FBBank"),
            new Bank("CitiBank"),
            new Bank("Τραπεζα Πειραιώς"),
            new Bank("HSBC Bank"),
            new Bank("Εθνική Τράπεζα"),
            new Bank("Εμπορική Τράπεζα"),
            new Bank("Proton Bank"),
            new Bank("Αγροτική Τράπεζα"),
            new Bank("Γενική Τράπεζα"),
            new Bank("Tbank"),
            new Bank("Marfin Egnatia Bank"),
        };
    }
}

在页面加载 ii 中,使用来自银行类的数据填充 MultiselectList(称为 BankMultiSelectList)的 ItemsSource:

Bank bank = new Bank();
BankMultiSelectList.ItemsSource = bank.GetBanks();

这将创建一个页面,其中包含一些复选框,它们的名称从类方法绑定。我想在应用程序栏中创建一个“全选”按钮,以便在按下时一次选择所有复选框。我如何遍历页面的所有复选框控件,以便将其 IsChecked 属性设置为 true?在此先感谢您的帮助。

4

1 回答 1

1

可以遍历 UI 中的元素并设置它们的选中状态。但更好的方法是设置模型的状态并让绑定完成更新 UI 的工作。

  1. 修改你的Bank类来实现INotifyPropertyChanged,特别是在IsSelected属性上。
  2. 遍历这个类的所有实例并设置IsSelected=true

......你就完成了!

于 2012-05-02T13:32:48.103 回答