Windows RT XAML切换开关,用于查看可见性问题

时间:2012-12-31 01:12:24

标签: xaml winrt-xaml

我开始在visual studio中使用一个空白的Windows RT应用程序。 我已经实现了:http://blogs.u2u.be/diederik/post/2011/11/14/null.aspx

的BooleanToVisibility转换器

我在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();

}

有人想过我可能会忽略什么来设置这个切换?

1 个答案:

答案 0 :(得分:0)

我终于明白了。 在某些时候我已经删除了Notifier类上的INotifyPropertyChanged的继承,看起来我不需要两个时刻就能完成所需的一切。

上述工作只需更改单行:

    class Notifier

为:

    class Notifier : INotifyPropertyChanged