【问题标题】:How do I use ToggleSwitch with MVVM Light in WP7?如何在 WP7 中将 ToggleSwitch 与 MVVM Light 一起使用?
【发布时间】:2011-04-12 13:50:49
【问题描述】:

我正在尝试在 Wp7 应用程序中使用带有 MVVM Light 的 ToggleSwitch。

在我看来:

<toolkit:ToggleSwitch x:Name="toggleAccuracy" 
  Content="{Binding AccuracyText, Mode=TwoWay}"  
  IsChecked="{Binding AccuracyHigh, Mode=TwoWay}"
  IsEnabled="True" 
  Header="Accuracy" 
  Margin="8,0" 
  Height="140" 
  VerticalAlignment="Top"  >

ViewModel 包含:

private bool _AccuracyHigh = true;
public bool AccuracyHigh
{
    get
    {
        return _AccuracyHigh;
    }
    set 
    {
        _AccuracyHigh = value;
    }
}

private string _AccuracyText = "High";
public string AccuracyText
{
    get
    {
        return _AccuracyText;
    }
    set
    {
        _AccuracyText = value;
    }
}

AccuracyText 和 AccuracyHigh 触发以获得适当的值。

我的困难是试图捕获“状态改变”事件;选中和未选中。如果我将这些与以下内容绑定: Checked="{绑定路径=AccuracyChanged}" 我收到一个运行时错误,告诉我标记错误。

我也尝试过触发失败:

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Checked">
            <GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding AccuracyChanged}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</toolkit:ToggleSwitch>

我可以使用 RadioButton 与

配合得很好
<RadioButton Content="Up"  
             x:Name="radioButton1" 
             GroupName="UpDown" 
             Width="119" />
<RadioButton IsChecked="{Binding UpDown, Mode=TwoWay}" 
             Content="Down" 
             x:Name="radioButton2" 
             GroupName="UpDown" />

public bool UpDown
{
    get
    {
        bool ud = settings.UpDown.ToLower() == "u" ? true : false;
        return ud;
    }
    set
    {
        settings.UpDown = value == true ? "U" : "D";
        settings.Save();
    }
}  

但 ToggleSwitch 看起来更好(恕我直言)

任何建议表示赞赏。

【问题讨论】:

    标签: windows-phone-7 mvvm-light


    【解决方案1】:

    我相信您的标记的问题可能是 ToggleButton 的 IsChecked 属性可以是三种状态; null,truefalse。您将其绑定到布尔值,但可能想尝试将其设为System.Nullable&lt;Boolean&gt; (bool?) 以允许三种状态。我相信即使你设置了IsThreeState = false,这仍然是必要的;

    【讨论】:

      猜你喜欢
      • 2013-08-09
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多