WPF,`Loaded`事件仅在第一个viewmodel初始化时触发,但不在后续

时间:2017-08-01 12:53:25

标签: wpf view render viewmodel eventtrigger

我像这样多次初始化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事件不再被触发。只有当控制失去焦点并重新聚焦时,它才会发射。

所需行为:每次完全呈现视图时,如何确保在视图模型中捕获?我需要捕获这个,因为我在视图模型中对此控件执行的某些操作仅在视图完全呈现时才起作用。

1 个答案:

答案 0 :(得分:0)

问题是,视图初始化(和加载)一次,并在更改内容时重复使用。

您可以尝试使用DataContextChanged事件 - 如果绑定到Content属性,则不确定是否有效。否则,您可以将内容依赖项属性的元数据覆盖为descibed here