【问题标题】:Control in control binding控件绑定中的控件
【发布时间】:2013-03-06 18:19:19
【问题描述】:

好的。所以我有以下行的主要视图

<!-- The first one is commented cause I tried it and it failed harder -->
<!--<ContentControl Name="BcModel" Grid.Column="2" Width="300" Height="300"/>-->
<local:BigCalendarDateView x:Name="BcModel" Grid.Column="2" Width="300" Height="300"/>

还有视图模型

[Export(typeof(AppViewModel))]
public class AppViewModel : Screen
{
    public BigCalendarDateViewModel BcModel { get; set; }

    [ImportingConstructor]
    public AppViewModel(BigCalendarDateViewModel mod, IEventAggregator events)
    {
        this.DisplayName = "Calendar";
        events.Subscribe(this);
        BcModel = mod;
    }
}

对于BigCalendarDateViewModel,我有视图

<!-- Commented because I tried this also -->
<!--cal:Message.Attach="[Event Click] = [Action ChangeState]"-->
<Button Name="ChangeState" Content="Button" HorizontalAlignment="Left" Margin="76,156,0,0" Grid.Row="2" VerticalAlignment="Top" Width="138"/>

在 ViewModel 中

[Export(typeof(BigCalendarDateViewModel))]
public class BigCalendarDateViewModel : PropertyChangedBase
{
    ...
    public void ChangeState()
    {
        Console.Beep();
    }
}

我可以调试通过,AppView、AppViewModel、BigCalendarDateView和BigCalendarDateViewModel都被初始化了,BigCalendarDateViewModel直观地显示了,但是当我点击按钮时,它要么说找不到方法,要么没有什么都不做。

BigCalendarDateViewModel 似乎永远不会连接到 BigCalendarDateView。

当我为控件创建一个引导程序时,它会在自己的窗口中弹出它,它工作正常(在新窗口中,而不是在第一个窗口中)

有什么想法吗?

【问题讨论】:

  • 尝试在按钮上使用 x:Name。
  • @mdm20 谢谢,但这也不起作用。

标签: wpf user-controls caliburn.micro


【解决方案1】:

我认为您可以通过执行以下操作显式地将视图模型提供给视图:

<local:BigCalendarDateView Grid.Column="2" Width="300" Height="300" cal:Bind.Model={Binding BcModel} />

【讨论】:

    猜你喜欢
    • 2012-03-05
    • 2014-01-14
    • 2011-07-09
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    相关资源
    最近更新 更多