C# Can';t通过绑定(WP8)从代码隐藏更新元素的可见性
XAML:C# Can';t通过绑定(WP8)从代码隐藏更新元素的可见性,c#,windows-phone-8,C#,Windows Phone 8,XAML: 当属性发生更改时,必须引发PropertyChanged事件,否则绑定将不会更新。您的BindingBase类实现了INotifyPropertyChanged,您可以/应该使用它来通知视图 () 您的财产应如下所示: public class RegionTree : BindableBase { public bool IsFirstLayer { get; set; } public bool IsSecondLayer { get; set; } pu
当属性发生更改时,必须引发PropertyChanged事件,否则绑定将不会更新。您的
BindingBase
类实现了INotifyPropertyChanged
,您可以/应该使用它来通知视图
()
您的财产应如下所示:
public class RegionTree : BindableBase
{
public bool IsFirstLayer { get; set; }
public bool IsSecondLayer { get; set; }
public bool IsThirdLayer { get; set; }
public Visibility VisibilityOption { get; set; }
public string Name;
public string Code;
public string RUName;
public string SWNE;
public string DisplayedName
{
get
{
if (Thread.CurrentThread.CurrentUICulture.ToString() == "ru-RU" && RUName != null)
{
return RUName;
}
else { return Name; }
}
}
}
这不是添加属性的正确方法,您必须使用
OnPropertyChanged(“VisibilityOption”)
才能更新集中的UI
。只需修改该属性即可。您是否有VisibilityOption属性?@vits,在RegionTree类中?当然更重要的是,若我在默认情况下将其设置为折叠,那个么UI中将不会显示任何内容。问题是,如果我更新这个属性,UI根本不会改变。你能添加你的属性代码吗?@vits,添加了整个类结构。
private void FilterBtn_Click(object sender, RoutedEventArgs e)
{
var allRegions = (RegionList.ItemsSource as ObservableCollection<RegionTree>);
foreach (var region in allRegions)
{
if (region.DisplayedName.IndexOf(RegionFilter.Text) >= 0)
{
region.VisibilityOption = Visibility.Visible;
}
else
{
region.VisibilityOption = Visibility.Collapsed;
}
}
RegionList.ItemsSource = allRegions;
}
public class RegionTree : BindableBase
{
public bool IsFirstLayer { get; set; }
public bool IsSecondLayer { get; set; }
public bool IsThirdLayer { get; set; }
public Visibility VisibilityOption { get; set; }
public string Name;
public string Code;
public string RUName;
public string SWNE;
public string DisplayedName
{
get
{
if (Thread.CurrentThread.CurrentUICulture.ToString() == "ru-RU" && RUName != null)
{
return RUName;
}
else { return Name; }
}
}
}
public Visibility VisibilityOption
{
get { return _visibilityOption; }
set
{
if (_visibilityOption != value)
{
_visibilityOption = value;
OnPropertyChanged("VisibilityOption");
}
}
}
public Visibility VisibilityOption { get; set; }