我可能在这里忽略了一些明显的东西,但我现在一辈子都看不到它。
我在用户控件(数据网格)上进行了交互,该控件具有绑定到 ICollectionView 的项目源,但 DataContext 是从父窗口继承的:
<DataGrid Margin="0" ItemsSource="{Binding ItemsView}" AutoGenerateColumns="False" IsReadOnly="True"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<DataGrid.Columns>
....
</DataGrid.Columns>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding OnNotifyPeg}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</DataGrid>
DataContext 继承自父窗口,它有一个选项卡式视图:
<Window x:Class="ConfigBrowser.Views.ConfigView"
DataContext="{Binding ConfigViewModel, Source={StaticResource Locator}}">
<Grid Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}">
<TabControl Height="Auto" Width="Auto"
Background="{DynamicResource {x:Static SystemColors.ControlLightBrushKey}}">
<TabItem Header="Overview">
<controls:Overview/>
</TabItem>
目前,OnNotifyPeg 命令只是打开一个窗口(通过服务,但也有一个消息框来调试)
public ICommand OnNotifyPeg
{
get { return new DelegateCommand(NotifyPeg); }
}
public void NotifyPeg()
{
MessageBox.Show("Notify peg", "Clicked");
_detailService.ViewPeg(SelectedItem);
}
虽然从 Visual Studio 中运行,但它工作正常 - uc 触发命令。
但是当我从 Debug 或 Release 文件夹运行时,什么也没有发生。没有错误,没有窗口,什么都没有——据我所知,它没有绑定在构建的应用程序中?
编辑:还要添加,列仍然从 ItemSource 加载它们的数据(它使用数据上下文)。
编辑2:如果我将数据网格移出用户控件并将其直接放入选项卡中,它会执行相同的行为。所以我认为这与此无关。
编辑 3:在评论中解决 - 看起来 Costura 在嵌入 System.Windows.Interactivity 时失败。