【发布时间】:2014-08-20 11:20:03
【问题描述】:
我已经解决了几个关于此的问题,但无法得到正确的答案。我不知道下面的代码哪里错了。我正在绑定 TextBlock 的可见性属性,但它不起作用。这是我的 xaml 代码,正在更改按钮单击中文本块的可见性属性。
<TextBlock Visibility="{Binding IsVisible}" Text="Visibility Sample" Margin="12,40" HorizontalAlignment="Center" Name="visibilityTextblock"/>
<Button Content="visibility" Tap="Button_Tap_1"/>
这是我的Button_Tap_1 函数。
private void Button_Tap_1(object sender, System.Windows.Input.GestureEventArgs e)
{
IsVisible = Visibility.Visible;
}
这是我的IsVisible 属性。
private Visibility _isVisible;
public Visibility IsVisible
{
get
{
return _isVisible;
}
set
{
_isVisible = value;
NotifyPropertyChanged("IsVisible");
}
}
最后这是我的NotifyPropertyChanged 方法。
#region NotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string p)
{
if (PropertyChanged == null)
return;
PropertyChanged(this, new PropertyChangedEventArgs(p));
}
#endregion
默认情况下,通过更改其属性将 Textblock 可见性初始化为折叠,
IsVisible = Visibility.Collapsed; ( in the constructor)
我还派生自 INotifyPropertyChanged 接口,并在同一个类文件中实现所有这些。谁能帮帮我哪里错了?
【问题讨论】:
-
您的代码对我有用,请确保您的绑定有效(您是否定义了 windows 的数据上下文?)。 (例如:尝试将字符串绑定到文本框的文本属性)
-
您的
TextBox中的DataContext是什么? (尝试设置Text="{Binding}"查看) -
@Antoine 和 har07,正如你们所说,将字符串绑定到 textblock 的 text 属性可以正常工作。但我无法在运行时更改文本属性。例如,我在按钮单击时为该属性分配另一个字符串并且它不会改变。 NotifyPropertyChanged 有什么问题吗?在保留断点时,我可以看到按钮单击后 PropertyChanged 的值仍然为空。
标签: c# xaml data-binding windows-phone visibility