我有一个类,其中包含一个名为CanSeePhotos的布尔静态属性,这应该控制我的DataTemplate中图片的可见性。出于调试目的,我将“CanSeePhotos”绑定到DataTemplate中的文本块上。
我想做的是:
1. InitializeComponent() 2. 根据已登录用户设置CanSeePhotos 3. 加载数据并适当显示
我的问题是,如果我在InitializeComponent()之后设置CanSeePhotos = true,则数据仍会以CanSeePhotos为false显示(如果我在之前设置则可以正常工作)。为什么会这样?如何修复它,以便在加载数据之前的任何时候都可以设置值?
以下是我如何在DataTemplate中绑定静态变量的方式:
但我需要像这样使用DataTrigger:
在上述情况下,如果属性为true,则setter永远不会被设置。
怎么回事?
我想做的是:
1. InitializeComponent() 2. 根据已登录用户设置CanSeePhotos 3. 加载数据并适当显示
我的问题是,如果我在InitializeComponent()之后设置CanSeePhotos = true,则数据仍会以CanSeePhotos为false显示(如果我在之前设置则可以正常工作)。为什么会这样?如何修复它,以便在加载数据之前的任何时候都可以设置值?
以下是我如何在DataTemplate中绑定静态变量的方式:
<TextBlock Text="{Binding Source={x:Static DAL:LoggedInUser.CanSeePhotos}, Mode=OneWay}"/>
以下是 LoggedInUser 类的代码:
public class LoggedInUser
{
public static bool CanSeePhotos { get; set; }
}
编辑: 如果我直接将控件的可见性绑定到静态属性,它将根据该属性的值显示/折叠:
Visibility="{Binding Source={x:Static DAL:LoggedInUser.CanSeePhotos}, Converter={StaticResource BooleanToVisibilityConverter}}"
但我需要像这样使用DataTrigger:
<DataTrigger Binding="{Binding Source={x:Static DAL:LoggedInUser.CanSeePhotos}}" Value="true">
<Setter TargetName="icon" Property="Source" Value="{Binding Photo}"/>
</DataTrigger>
在上述情况下,如果属性为true,则setter永远不会被设置。
怎么回事?