WP7 / Silverlight Как переключить флажок внутри списка?

#windows-phone-7 #.net-4.0 #silverlight-3.0

#windows-phone-7 #.net-4.0 #silverlight-3.0

Вопрос:

У меня возникают проблемы при попытке разобраться в этом. В принципе, у меня есть listbox с флажком в нем, что делает его «Отмеченным» listbox.

Что я хочу сделать, так это когда пользователь нажимает кнопку, флажок переключается (либо отображается, либо скрывается).

Я пытался привязать видимость к свойству в моей модели просмотра, но это не работает.

Каков правильный способ сделать это? Я искал в Google и SO и не смог найти ничего надежного.

Спасибо.

Комментарии:

1. Не могли бы вы опубликовать какой-нибудь код? Трудно сказать, что происходит не так, только из вашего описания.

Ответ №1:

Привязать видимость флажка к свойству класса, содержащегося в списке, который является источником элементов listbox.

Вот некоторый код. Это был быстрый тест, использующий исходный код, но его следует легко перенести в вашу модель просмотра.

Класс:

 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>
  

Комментарии:

1. Как это позволит установить видимость флажка? Я хочу показать или скрыть флажки в списке.

2. Извините — неправильно истолковал вопрос. Мы опубликовали пример кода, который соответствует вашим требованиям.