![](/img/trans.png)
[英]How do you set the visibility of a StackPanel in WP7 using 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
属性可以是三种状态; null
, true
或false
。你将它绑定到布尔值,但可能想尝试使它成为System.Nullable<Boolean>
( bool?
)以允许三种状态。 我相信即使你设置IsThreeState = false
,这仍然是必要的;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.