ToggleSwitch不遵守Can约定

时间:2015-03-26 16:47:27

标签: windows-phone-8.1 caliburn.micro

我正在构建一个Windows Phone 8.1应用程序(WinRT / Windows Store,没有Silverlight),我使用的是Caliburn Micro Version 2.0.1。

根据我的观察,在我看来,没有可以达成的惯例 ToggleSwitch控件。在视图中,我有一个名为“Switch”的ToggleSwitch。 在ViewModel中,我有两个属性:“Switch”和“CanSwitch”,两者都是bool类型。

在视图中:

<ToggleSwitch x:Name="Switch" />

在ViewModel中:

public bool CanSwitch
{
    get
    {
        return ...;
    }
}

public bool Switch { get; set; }

我希望根据属性启用或禁用ToggleSwitch “CanSwitch”。但这不起作用。只有在建立了明确的绑定后我才能得到 这种行为。

<ToggleSwitch x:Name="Switch"
              IsEnabled="{Binding CanSwitch}" />

这是Caliburn Micro中的错误或缺失功能还是我做错了什么?

更新

我修改了ViewModel,CanSwitch总是返回false。这对View没有影响。 ToggleSwitch仍然启用。

public bool Switch { get; set; }

public bool CanSwitch
{
    get
    {
        return false;
    } 
}

我还在CanSwitch的getter中设置了一个断点。这个断点从未被击中过。 Caliburn Micro似乎忽略了CanSwitch。

1 个答案:

答案 0 :(得分:0)

private bool switch;

public bool CanSwitch
{
    get { return switch; }
    set 
    {
        switch= value;
        NotifyOfPropertyChange(() => switch);
    }
}