我有ShellView这是导体。它包含StartView,我在其中创建Appbar。但在我的应用程序中有很多其他视图appbar在所有屏幕上看起来都很相似所以我制作了AppBarView和AppBarViewModel。我的AppBar是这样定义的:
***StartView***
<Page.BottomAppBar>
<AppBar x:Name="BottomAppBar">
<Grid HorizontalAlignment="Right" >
<local:AppBarView Caliburn:Bind.Model="{Binding AppBarViewModel}" />
</Grid>
</AppBar>
</Page.BottomAppBar>
***AppBarView***
<StackPanel Orientation="Horizontal">
<Button Name="Play" Style="{StaticResource PlayAppBarButtonStyle}" />
</StackPanel>
我还创建AppBarViewModel方法Play
(这是由CM约定)。
当我运行应用程序和打开AppBar第一次我的按钮不工作。但如果我隐藏并再次打开AppBar -一切都很好。
知道为什么第一次不能工作吗?谢谢你!
乌利希期刊指南:调试时输出窗口出现错误:
Error: BindingExpression path error: 'AppBarViewModel' property not found on 'MusicMaker.ViewModels.AppBarViewModel, MusicMaker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. BindingExpression: Path='AppBarViewModel' DataItem='MusicMaker.ViewModels.AppBarViewModel, MusicMaker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'; target element is 'MusicMaker.Views.AppBarView' (Name='null'); target property is 'Model' (type 'Object')
我有两个建议给你Alexei,但它们可能行不通,但至少你可以试试:
- 用
Caliburn:View.Model="{Binding AppBarViewModel}"
代替Caliburn:Bind.Model="{Binding AppBarViewModel}"
- 如果第一个选项不起作用,那么请查看这篇屏幕,导体和组成文章,看看作者是如何做到viewfirst的,注意他在
Caliburn:Bind.Model="{Binding AppBarViewModel}"
中使用了字符串而不是绑定标记。
这就是我能说的。