繁体   English   中英

如何在WP7中使用ToggleSwitch和MVVM Light?

[英]How do I use ToggleSwitch with MVVM Light in WP7?

我试图在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 fire获得适当的值。

我的困难是试图陷入“状态改变”的事件; 选中和未选中。 如果我用以下内容绑定它们:Checked =“{Binding Path = 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看起来更好(恕我直言)

任何建议赞赏。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM