Почему DataCtext элемента ItemsControl назначается после того, как они были отрисованы - PullRequest
0 голосов
/ 27 мая 2011

В моем XAML определен следующий ItemsControl:

<UserControl.Resources>
    <DataTemplate x:Key="myDataTemplate">
        <Grid Margin="20">

            <View:MyView Width="123" Height="212"/>

        </Grid>
    </DataTemplate>
</UserControl.Resources>

<Grid>
    <ItemsControl ItemsSource="{Binding MyVMs}" ItemTemplate="{StaticResource myDataTemplate}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
</Grid>

И DataContext из View:MyView присваивается после всех элементов пользовательского интерфейса, которые были отрисованы.Мне интересно знать, почему это происходит?

1 Ответ

4 голосов
/ 27 мая 2011

DataContext не устанавливается после визуализации элементов.Если бы это было так, вы бы увидели, что ваши элементы визуализируются дважды, один раз изначально, когда DataContext имеет значение null, и второй раз, когда DataContext установлен и ваши привязки оцениваются.

Из того, что вы описываете,вы устанавливаете точку останова или трассируете внутри конструктора.Свойства не могут быть установлены в классе до их создания!

...