WP7 / Silverlight Как установить флажок внутри списка? - PullRequest
1 голос
/ 18 апреля 2011

У меня проблемы с попыткой выяснить это. По сути, у меня есть список со флажком, который делает его «проверенным» списком.

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

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

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

Спасибо.

1 Ответ

0 голосов
/ 18 апреля 2011

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

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

Класс:

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>
...