我像这样多次初始化UserControl的视图模型
ChartControl = new SciChartControlViewModel(true, false, true);
视图通过ContentControl
呈现,如
<Grid Grid.Row="1">
<ContentControl Content="{Binding ChartControl}"/>
</Grid>
我在视图中挂钩Loaded
事件,如此
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding OnViewLoadedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
问题:仅在视图模型的第一次初始化时才会触发Loaded
事件。当我随后再次初始化视图模型时,Loaded
事件不再被触发。只有当控制失去焦点并重新聚焦时,它才会发射。
所需行为:每次完全呈现视图时,如何确保在视图模型中捕获?我需要捕获这个,因为我在视图模型中对此控件执行的某些操作仅在视图完全呈现时才起作用。
答案 0 :(得分:0)
问题是,视图初始化(和加载)一次,并在更改内容时重复使用。
您可以尝试使用DataContextChanged
事件 - 如果绑定到Content
属性,则不确定是否有效。否则,您可以将内容依赖项属性的元数据覆盖为descibed here。