我试图在页面中放置一个集线器,但是似乎绑定功能不正确。我使用了Template10 Hamburger示例,并尝试在主页面上放置一个集线器。在测试时,我只是将现有的stackpanel封装在hub部分中,但这似乎破坏了按钮click事件的绑定。
构建时出错:
你调用的对象是空的
<HubSection>
<DataTemplate>
<StackPanel Grid.Row="1" VerticalAlignment="Top" Orientation="Horizontal"
Padding="12,8,0,0">
<controls:Resizer>
<TextBox Width="200" MinWidth="200" MinHeight="60"
Margin="0" Header="Parameter to pass"
Text="{Binding Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
TextWrapping="Wrap">
<Interactivity:Interaction.Behaviors>
<Behaviors:TextBoxEnterKeyBehavior>
<Core:CallMethodAction MethodName="GotoDetailsPage" TargetObject="{Binding}" />
</Behaviors:TextBoxEnterKeyBehavior>
<Core:EventTriggerBehavior>
<Behaviors:FocusAction />
</Core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</TextBox>
</controls:Resizer>
<Button Margin="12,0" VerticalAlignment="Bottom"
Click="{x:Bind ViewModel.GotoDetailsPage}" Content="Submit" />
</StackPanel>
</DataTemplate>
</HubSection>
我当然可以向您解释这个问题。因为您正在使用集线器控件,并且由于集线器控件使用集线器部分,并且因为集线器部分(与工具箱中的几乎所有其他控件不同)使用数据模板来绘制其内容,所以数据模板中每个元素的数据上下文都不为延长外部页面的数据上下文。也就是说,绑定失败,因为您正在绑定到没有所需方法的新类。
至于解决方案,您可以这样做:
<Core:CallMethodAction MethodName="GotoDetailsPage" TargetObject="{Binding ElementName=ViewModel}" />
该语法将使您的上下文回到页面的视图模型。但是您的解决方案似乎很适合您。我会坚持可行的。
祝你好运。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句