C# WPF-将UserControl可见性绑定到属性
我有一个绑定到ObservableCollection的ListView。数据从internet加载,然后添加到集合中。下载需要几秒钟,我想告诉用户数据正在加载 我创建了一个指示活动的UserControl。我把它放在ControlTemplate里面C# WPF-将UserControl可见性绑定到属性,c#,wpf,xaml,binding,controltemplate,C#,Wpf,Xaml,Binding,Controltemplate,我有一个绑定到ObservableCollection的ListView。数据从internet加载,然后添加到集合中。下载需要几秒钟,我想告诉用户数据正在加载 我创建了一个指示活动的UserControl。我把它放在ControlTemplate里面 <ControlTemplate x:Key="ListViewControlTemplate1" TargetType="{x:Type ListView}"> <Grid> <local:
<ControlTemplate x:Key="ListViewControlTemplate1" TargetType="{x:Type ListView}">
<Grid>
<local:ActivityIndicatorControl
HorizontalAlignment="Center"
Height="Auto"
Margin="0"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
我想将ActivityIndicatorControl
的可见性绑定到属性,比如说bool IsLoading
,并相应地将其设置为可见/折叠
谢谢 我建议使用接受布尔值并返回可见性枚举的成员
下面是一个很好的例子:
XAML将如下所示:
<ControlTemplate x:Key="ListViewControlTemplate1" TargetType="{x:Type ListView}">
<Grid Visibility="{Binding IsLoading, Converter={StaticResource myBoolToVisibilityConverter}}">
<local:ActivityIndicatorControl
HorizontalAlignment="Center"
Height="Auto"
Margin="0"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
首先定义转换器的资源(将其放入资源字典中):
然后按如下方式更改模板:
<ControlTemplate x:Key="ListViewControlTemplate1" TargetType="{x:Type ListView}">
<Grid Visibility="{Binding IsLoading, Converter={StaticResource myBoolToVisibilityConverter}}">
<local:ActivityIndicatorControl
HorizontalAlignment="Center"
Height="Auto"
Margin="0"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
使用.NET的内置转换器
.NET3具有内置的
(注:并非所有平台都提供,例如:移动平台)
首先将其添加到您的资源中
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="bool2vis"></BooleanToVisibilityConverter>
</UserControl.Resources>
谢谢,正是我想要的!此外,UserControl是否从网格继承DataContext?是否可以在UserControl本身上创建绑定?是的,UserControl将具有与网格相同的DataContext。因此,您可以毫无问题地将可见性绑定放在UserControl上。请注意:将BooleanToVisibilityConverter更改为BooleanToVisibilityConverter(添加缺少的“i”),如下所示:
<Label Visibility="{Binding IsSomeProperty, Converter={StaticResource bool2vis}}" />
<Application.Resources>
<app:BooleanToVisibilityConverter
x:Key="BooleanToVisibilityConverter"
True="Collapsed"
False="Visible" />
</Application.Resources>