WPF - 将用户控件的可见性绑定到一个属性

15 浏览
0 Comments

WPF - 将用户控件的可见性绑定到一个属性

我有一个绑定到ObservableCollection的ListView。数据从互联网加载然后添加到集合中。下载需要几秒钟,我想向用户指示数据正在加载。

我创建了一个指示活动的UserControl。我将它放在ControlTemplate中。


    
        
    

我想将ActivityIndicatorControl的Visibility绑定到一个属性,比如bool IsLoading,并相应地设置为Visible/Collapsed。

谢谢!

0
0 Comments

问题原因:用户想要在WPF中将UserControl的可见性与一个属性绑定,但不知道如何实现。

解决方法:可以使用.NET 3中内置的BooleanToVisibilityConverter来实现。首先将其添加到资源中,并在元素上使用它进行绑定。

代码示例:


    

如果需要反转转换器(例如,当属性为true时隐藏元素),可以使用一个自定义实现的IValueConverter,该IValueConverter支持通过XAML进行反转。

代码示例:


    

0
0 Comments

问题的出现原因是需要将一个布尔值绑定到UserControl的可见性属性上。解决方法是使用一个IValueConverter将布尔值转换为Visibility枚举的成员。

首先,需要定义一个BooleanToVisibilityConverter的资源,放在一个资源字典中。代码如下:


然后,将模板中的可见性属性绑定到IsLoading属性,并使用刚刚定义的转换器。代码如下:


    
        
    

另外,UserControl会继承Grid的DataContext,因此可以在UserControl上创建绑定。需要注意的是,BooleanToVisibiltyConverter需要改为BooleanToVisibilityConverter。代码如下:


0