Блуждающий флажок Проверенные и непроверенные события для Windows Phone 7 - PullRequest
1 голос
/ 01 марта 2012

У меня есть ListBox ItemTemplate, где у меня есть CheckBox, который привязан к списку <>, который я поддерживаю в своем приложении.

Мой XAML:

  <ListBox x:Name ="lstTasks">
         <ListBox.ItemTemplate>
               <DataTemplate>
                   <StackPanel Orientation="Horizontal" Margin="30,12,0,0">
                         <CheckBox IsChecked="{Binding use}" Unchecked="CheckBox_Unchecked" Tag="{Binding key}" Checked="CheckBox_Checked" />
                         <TextBlock Width="160" Text="{Binding key}" Margin="20,18,0,0" />
                         <TextBlock Text="{Binding value}"  Margin="0,18,0,0"/>
                    </StackPanel>
               </DataTemplate>
         </ListBox.ItemTemplate>
  </ListBox>

А:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    lstTasks.ItemsSource = null;
    lstTasks.ItemsSource = a.Words; //a.Words is the List<DataClass>
}

Я заметил, что события Checked и Unchecked запускаются сами по себе, когда я прокручиваю список этих предметов. У меня есть логика, связанная с этими событиями, и они все портят, проверяя и снимая флажки случайных записей. Это начинается после того, как я снимаю галочку с одного из пунктов. (По умолчанию все пункты отмечены)

Я новичок в WPF и Windows Phone, что я делаю не так ??

1 Ответ

0 голосов
/ 01 марта 2012

Во-первых, Windows Phone не использует WPF.Вы используете Silverlight, который основан на подмножестве WPF.Это разные технологии с разными возможностями.Многое из того, что вы можете сделать с одним, вы не можете сделать с другим.

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

Я подозреваю, что одна из двух вещей:
1 - где-то есть некоторая логика, основанная на установке свойства use, и, как это изменяется в виртуальной машине, тот факт, что это отражается в пользовательском интерфейсе и вызываетсобытия.
2 - у вас есть виртуализированный список внутри вашего ListBox, и когда элементы загружаются, он запускает обновления пользовательского интерфейса (из-за привязки), а это, в свою очередь, вызывает события.

Не имея возможностичтобы увидеть больше кода, сложно быть более конкретным.

В качестве альтернативы этому подходу вы можете использовать двустороннюю привязку свойства use и убрать логику из ваших обработчиков событий (для проверенных и непроверенных) и в установщик свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...