내 시나리오의 일부 코드 단편입니다. .xaml쪽에 ItemsControl이 있습니다.바인딩은 ElementName을 사용하는 경우에만 작동합니다. 이유가 무엇입니까?
<ItemsControl ItemsSource="{Binding StatList}" ItemTemplate="{StaticResource statBox}"></ItemsControl>
StatList는 단순히 개체 목록입니다.
이 DataTemplate을이 TextBlock의
<TextBlock x:Name="DataTextBlock" Background="Transparent" DockPanel.Dock="Top" HorizontalAlignment="Center"
Foreground="White" FontSize="11">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<iBehaviors:InvokeMethodTrigger Method="UpdateBinding"
Target="{Binding DataContext, RelativeSource={RelativeSource TemplatedParent}}"
Parameter="{Binding ., RelativeSource={RelativeSource AncestorType=TextBlock}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
이가 내 ViewModel에 내 StatList을 설정 처음 작동을 포함, TextBlock이 자체가 InvokeMethodTrigger에 매개 변수로 전달됩니다. 그러나 내 ViewModel에서 StatList를 변경하면 다음에 Loaded 이벤트가 발생할 때 InvokeMethodTrigger가 트리거 될 때 매개 변수가 null입니다. 이상하게도
, 나는 매개 변수가 바인딩 변경 :
Parameter="{Binding ElementName=DataTextBlock}"
그것이 내가 TextBlock에이 매개 변수로 전달되면서, 내 StatList을 변경하려면 두 번째 시간을 작동합니다. 나는 내 인생을 위해 이유를 이해할 수 없다! 설명이 있습니까?