0

我有 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 - 一切都很好。

任何想法为什么它第一次不起作用?谢谢!

UPD: 调试中的输出窗口有错误:

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')

4

1 回答 1

1

我有两个建议给你 Alexei,但它们可能不起作用,但至少你可以尝试:

  1. 替换Caliburn:Bind.Model="{Binding AppBarViewModel}"Caliburn:View.Model="{Binding AppBarViewModel}"
  2. 如果第一个选项不起作用,请查看这篇Screens、Conductors 和 Composition 文章以了解作者是如何做到 View-First 的,请注意他在里面使用了字符串而不是绑定标记Caliburn:Bind.Model="{Binding AppBarViewModel}"

这就是我能说的。希望能帮助到你。

于 2013-06-07T00:18:40.390 回答