2009-10-20 4 views
-1

У меня есть, вероятно, просто проблема, что я просто не могу показаться, чтобы выяснить:[WPF] ItemsControl не полностью загружен @Loaded события

Я сделал ItemsControl, который имеет свой datacontext набор и показывает данные как пары Checkboxes и TextBlocks:

<ItemsControl Name="listTaskTypes" Grid.Row="1" Grid.Column="2" Grid.RowSpan="2" ItemsSource="{Binding}" Margin="10,0,0,0" VerticalAlignment="Top" Loaded="listTaskTypes_Loaded"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <CheckBox Name="checkBoxTypeId" Tag="{Binding Path=TaskTypeID}"/> 
       <TextBlock FontSize="11pt" FontFamily="Helvetica" Text="{Binding Path=Text}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Моя проблема заключается в том, что в Loaded случае ItemsControl, флажки пока не существует. Как я могу получить событие, когда ItemsControl полностью загружен или это невозможно?

+0

Как вы знаете, что флажков еще нет? что вы хотите делать с флажками? –

+0

Я пытался получить экземпляры всех флажков, чтобы я мог установить их в выбранные или нет, в зависимости от некоторых условий в БД. Я решил это, используя событие Loaded в Checkboxes, чтобы вместо этого установить состояние отдельных флажков. – 2009-10-20 09:17:53

ответ

0

listTaskTypes.ItemContainerGenerator.StatusChanged обработчик событий может предоставить вам уведомление по каждому элементу, созданному в ItemsControl.

Yeah Loaded - это событие, загруженное в ItemsControl, элементы, возможно, не были созданы в этот момент. Просто любопытно, чего вы пытаетесь достичь здесь? Наверное, вы пытаетесь получить экземпляр CheckBox в коде? Возможно, лучше использовать привязку для достижения того, что вы ищете.

+0

Вы действительно правы - я создал метод, который извлекает экземпляр всех флажков, которые затем устанавливаются в выбранные или нет, в зависимости от некоторых условий в базе данных. Эти условия не являются простыми истинными/ложными полями, поэтому я не знаю, как делать привязку. Решение для меня состояло в том, чтобы просто установить их через собственное загруженное событие, а затем сначала получить их все, когда пользователь нажимает кнопку «Сохранить», в какой момент они, конечно, существуют. – 2009-10-20 09:32:47

+0

Я полагаю, что логика заключается в том, чтобы узнать, что статус флажка действительно может быть на стороне ViewModel, и свойство bool может быть привязано к флажку. Поэтому я действительно рекомендую использовать MVVM здесь и избегать codebehind –

0

Пробуйте DataContextChanged событие!

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

Надеюсь, что это поможет

 Смежные вопросы

  • Нет связанных вопросов^_^