到目前为止我有这个代码:
<ViewCell>
<Grid>
<Label Text="Custom Scores" />
<Switch IsToggled="{Binding ShowPointsSwitch}" />
</Grid>
</ViewCell>
<ViewCell Tapped="openPicker">
<Grid IsVisible="{Binding ShowPointsSwitch}">
<Label Text="ABC" />
</Grid>
<Grid IsVisible="{Binding ShowPointsSwitch, Converter={StaticResource InverseBoolConverter} }">
<Label Text="DEF" />
</Grid>
</ViewCell>
我要做的是让开关隐藏并显示不同的网格,但它不起作用。所有发生的事情是它显示一个标签,然后当移动开关时它什么也没显示。
有人可以就如何解决这个问题向我提出建议。以供参考。这是我的ViewModel:
bool showPointsSwitch;
public bool ShowPointsSwitch
{
get
{
return showPointsSwitch;
}
set
{
if (value != showPointsSwitch)
{
showPointsSwitch = value;
NotifyPropertyChanged("ShowPointsSwitch");
}
}
}
这是转换器:
public class InverseBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return !(bool)value;
}
}
答案 0 :(得分:1)
那基本上是因为ViewCell
应该只有一个孩子。
尝试使用:
<ViewCell Tapped="openPicker">
<Grid>
<Label Text="ABC" IsVisible="{Binding ShowPointsSwitch}" />
<Label Text="DEF" IsVisible="{Binding ShowPointsSwitch, Converter={StaticResource InverseBoolConverter} }" />
</Grid>
</ViewCell>
或者,
<ViewCell Tapped="openPicker">
<Grid>
<Grid IsVisible="{Binding ShowPointsSwitch}">
<Label Text="ABC" />
</Grid>
<Grid IsVisible="{Binding ShowPointsSwitch, Converter={StaticResource InverseBoolConverter}}">
<Label Text="DEF" />
</Grid>
</Grid>
</ViewCell>
答案 1 :(得分:0)
您可以尝试使用
代替转换器{Binding !ShowPointsSwitch}