【问题标题】:WP7/Silverlight How do you toggle a checkbox inside a list?WP7/Silverlight 如何切换列表中的复选框?
【发布时间】:2011-04-18 02:58:14
【问题描述】:

我在试图解决这个问题时遇到了问题。基本上,我有一个带有复选框的列表框,使其成为“选中”列表框。

我想要做的是当用户点击一个按钮时,复选框被切换(显示或隐藏)。

我尝试将可见性绑定到我的视图模型中的属性,但这不起作用。

解决这个问题的正确方法是什么?我搜索了 google 和 SO,找不到任何可靠的东西。

谢谢。

【问题讨论】:

  • 你能发布一些代码吗?仅从您的描述很难判断出了什么问题。

标签: windows-phone-7 .net-4.0 silverlight-3.0


【解决方案1】:

将复选框的可见性绑定到列表中包含的类的属性,该列表是列表框的项目源。

这是一些代码。这是一个快速测试,使用了后面的代码,但应该很容易移植到您的视图模型中。

类:

public class CheckString
{
    public Visibility Visibility
    {
        get 
        { 
            Visibility retval = Visibility.Collapsed;
            if (IsChecked)
            {
                retval = Visibility.Visible;
            }
            return retval;
        }
    }
    public bool IsChecked { get; set; }
    public string Description { get; set; }

    public CheckString() {}
}

后面的代码

public partial class MainPage : PhoneApplicationPage
{

    public List<CheckString> CheckStringList { get; set; }

    // Constructor
    public MainPage()
    {
        InitializeComponent();

        SetupList();

        DataContext = this;
    }

    private void SetupList()
    {
        CheckStringList = new List<CheckString>();

        CheckString cs1 = new CheckString { Description = "Test 1"};
        CheckStringList.Add(cs1);

        CheckString cs2 = new CheckString { IsChecked = true, Description = "Test 2" };
        CheckStringList.Add(cs2);

        CheckString cs3 = new CheckString { Description = "Test 3" };
        CheckStringList.Add(cs3);

    }

}

Xaml

    <ListBox.ItemTemplate>

        <DataTemplate>

            <Grid>

                <Grid.ColumnDefinitions>
                    <ColumnDefinition
                        Width="Auto" />
                    <ColumnDefinition
                        Width="*" />
                </Grid.ColumnDefinitions>

                <CheckBox
                    Grid.Column="0"
                    Visibility="{Binding Visibility}"
                    IsChecked="{Binding IsChecked}" />

                <TextBlock
                    Grid.Column="1"
                    Text="{Binding Description}" />
            </Grid>

        </DataTemplate>

    </ListBox.ItemTemplate>

</ListBox>

【讨论】:

  • 这将如何设置复选框的可见性?我想在列表中显示或隐藏复选框。
  • 对不起 - 误读了这个问题。已发布满足您要求的示例代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 2011-07-30
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多