1

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

}

有人对设置此切换可能会忽略什么有想法吗?

4

1 回答 1

0

我终于明白了。我在某个时候已经放弃了 Notifier 类上 INotifyPropertyChanged 的​​继承,看起来我没有两分钟就拥有了我需要的一切。

以上仅通过更改单行来工作:

    class Notifier

至:

    class Notifier : INotifyPropertyChanged 
于 2013-01-20T00:46:35.877 回答