我在Windows手机应用程序中绑定位于侧边栏中的按钮时遇到问题。似乎按钮绑定只是消失了..
此处是我的代码
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<sidebar:SidebarControl x:Name="sidebarControl"
HeaderText="WP"
HeaderBackground="YellowGreen"
HeaderForeground="White"
SidebarBackground="{StaticResource PhoneChromeBrush}">
<sidebar:SidebarControl.SidebarContent>
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="380">
<Button Content="Go to page 2" x:Name="GoToPage2"/>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
</sidebar:SidebarControl.SidebarContent>
<Grid VerticalAlignment="Top" HorizontalAlignment="Stretch"
Margin="12">
<TextBlock Style="{StaticResource PhoneTextNormalStyle}">Your current view goes here</TextBlock>
</Grid>
</sidebar:SidebarControl>
</Grid>
</Grid>
目前我正在使用侧边栏称为SidebarWP8的nuget。也许Calinbrun.Micro不能用这个?或者我是否必须在网格中向VM插入绑定?
这是ViewModel中的方法:
private readonly INavigationService navigationService;
public MainPageViewModel(INavigationService navigationService)
{
this.navigationService = navigationService;
}
public void GoToPage2()
{
navigationService.UriFor<Page2ViewModel>().Navigate();
}
答案 0 :(得分:0)
我检查了Caliburn Micro的来源:我通过遍历可视树来查找具有名称的元素来处理约定绑定。但它只检查每个控件的默认内容属性。
这意味着它只会通过内容或儿童元素而非 SidebarContent 等自定义属性,因此找不到命名元素那里。
您必须手动连接(通过绑定命令或添加单击处理程序)。
答案 1 :(得分:0)
<Button cm:Message.Attach="[Event Click] = [Action GoToPage2()]" />
这应该有效,因为其他评论者对于默认控件是正确的...自定义控件需要添加一些更多的处理,其中可能是一个痛苦的屁股但用CM上面的短手做它会看起来按钮中的该属性并相应处理。