【发布时间】:2010-12-13 23:26:26
【问题描述】:
我有一个名为 CanSeePhotos 的带有布尔静态属性的类,它应该控制我的 DataTemplate 中图片的可见性。 出于调试目的,我将“CanSeePhotos”绑定到 DataTemplate 中的文本块。
我想做的是:
- 初始化组件()
- 根据登录用户设置 CanSeePhotos
- 加载数据并适当显示
我的问题是,如果我在 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 永远不会被设置。
什么给了?
【问题讨论】:
标签: wpf datatemplate