【问题标题】:UserControl binding inside popup control using caliburn micro使用 caliburn micro 在弹出控件中绑定 UserControl
【发布时间】:2018-09-20 22:43:26
【问题描述】:

我正在尝试在 wpf 弹出控件中加载 UserControl,从下面的代码中我可以看到带有黄色背景的弹出窗口打开,但是带有 View 的 ContentControl 没有被加载强>。我正在使用 Caliburn Micro 来解析 View 和 ViewModel。 下面是我的 xaml,pop 外的 contentcontrol 工作正常,但 Popup 内的相同内容控件只显示黄色背景。

<ContentControl x:Name="SearchListViewModel" />
                <ToggleButton Name="button1">
                    <ToggleButton.Template>
                        <ControlTemplate TargetType="ToggleButton">
                            <TextBlock Text="Select" />
                        </ControlTemplate>
                    </ToggleButton.Template>
                </ToggleButton>
                <Popup IsOpen="{Binding IsChecked, ElementName=button1}" StaysOpen="False">
                    <Border>
                        <StackPanel
                            Width="500"
                            Height="500"
                            Background="Yellow"
                            Orientation="Vertical">
                            <ContentControl x:Name="SearchListViewModel" />
                        </StackPanel>
                    </Border>
                </Popup>

【问题讨论】:

  • 假设您使用默认的视图/视图模型解析机制,那么您应该将内容控件重命名为SearchList 而不是SearchListViewModel。您的视图应称为SearchListView。 Caliburn 假定视图模型最后被称为 name + ViewModel。

标签: c# wpf xaml mvvm caliburn.micro


【解决方案1】:

我知道这有点晚了,但 Caliburn Micro 不会/无法在 Popup 控件中发现 ContentControl。因此内容控件不会绑定到SearchListViewModel 属性。

但是,您可以指定正确的绑定路径:

<ContentControl cal:View.Model="{Binding Path=SearchListViewModel,Mode=OneWay}"/>

注意: 您还需要引用cal 命名空间:

xmlns:cal="clr-namespace:Caliburn.Micro;assembly=Caliburn.Micro.Platform"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2012-10-12
    • 2018-07-29
    相关资源
    最近更新 更多