所以,我有一个标签控件:
<TabControl x:Name="tabControl" Grid.Column="1" BorderThickness="0" Margin="0,-2,0,0" Padding="0" SelectedIndex="{Binding SelectedIndex, Mode=TwoWay, UpdateSourceTrigger=Explicit}">
将datacontext设置为包含以下内容的视图模型:
private int _selectedIndex;
public int SelectedIndex
{
get
{
return _selectedIndex;
}
set
{
_selectedIndex = value;
OnPropertyChanged("SelectedIndex");
}
}
在其中一个标签项上,我有一个页面,它从标签控件中获取视图模型作为其数据上下文:
<Frame Source="Example.xaml" DataContext="{Binding}" LoadCompleted="Frame_LoadCompleted" DataContextChanged="Frame_DataContextChanged"/>
在该页面中,我有一个DataGrid,其中包含一个带有双击事件集的项目列表:
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding Path=DataContext.OpenExampleCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=Page}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
下面的按钮:
如果我捕获命令'OpenExampleCommand',则两者都调用更新SelectedIndex值的相同方法。但是,选项卡控件仅通过按钮单击更改为不同的索引,双击永远不会更新选项卡控件。
如果我更改了所选索引,请双击数据网格,然后点击按钮,在按钮更改所选索引之前,我可以看到它已被双击更改。
所以,我的问题是,为什么标签控件没有正确更新?两者都以完全相同的方式通知?