我从 Visual Studio 中的一个空白 Windows RT 应用程序开始。我已经实现了 BooleanToVisibility 转换器:http: //blogs.u2u.be/diederik/post/2011/11/14/null.aspx
我的 App.xaml 中有这个:
<Pathfinder:BooleanToVisibilityConverter x:Key="VisibleToInvisibleConverter" />
<Pathfinder:BooleanToVisibilityConverter x:Key="InvisibleToVisibleConverter" IsReversed="True" />
我添加了一个切换开关和一个文本框,我试图切换可见性以进行概念验证。这是拨动开关:
<ToggleSwitch IsOn="{Binding IsEditing, Mode=TwoWay}"
Margin="10"
HorizontalAlignment="Left"
VerticalAlignment="Top"
OffContent=""
OnContent=""
BorderThickness="0"
Width="80"
/>
这是文本框:
<TextBlock x:Name="pageTitle" Grid.Column="1" Text="{StaticResource AppName}"
Style="{StaticResource PageHeaderTextStyle}"
Visibility="{Binding IsEditing, Converter={StaticResource InvisibleToVisibleConverter}}"/>
我试图做到这一点,所以当开关关闭时,文本框是可见的,而当开关打开时,文本框是不可见的。我注意到,当我将文本框上的转换器设置为“BooleanToVisibilityConverter”或“VisibleToInvisibleConverter”时,它确实消失了(使用“InvisibleToVisibleConverter”可见)。我已将开关上的 IsOn 变量绑定到 IsEditing,因此它应该关闭/打开该变量,然后关闭/打开可见性。
这是我的通知程序类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml.Data;
using System.ComponentModel;
namespace Pathfinder
{
class Notifier
{
private bool isEditing;
public event PropertyChangedEventHandler PropertyChanged;
public bool IsEditing
{
get { return isEditing; }
set
{
isEditing = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("IsEditing"));
}
}
}
}
我在 MainPage.Xaml.CS 中创建它的一个实例:
public MainPage()
{
this.InitializeComponent();
this.DataContext = new Notifier();
}
有人对设置此切换可能会忽略什么有想法吗?