【发布时间】:2012-11-02 15:26:04
【问题描述】:
在我的应用程序中,我想根据用户授权级别显示/隐藏一个按钮。 如果用户是团队负责人,则应显示该按钮。如果用户不是团队领导,则不应显示。
我尝试使用在我的资源字典中定义的 BooleanToVisibilityConverter 来解决此问题:
<BooleanToVisibilityConverter x:Key="VisibilityConverter" />
转换器的实现:
<Button Grid.Row="1" Grid.Column="5"
Click="TeamLeader_Click" Visibility="{Binding IsTeamLeader, Converter={StaticResource
VisibilityConverter}}" Style="{StaticResource ButtonStyleMenu}" />
在我的类后面的代码中,我使用依赖属性来更改按钮的可见性。
public static readonly DependencyProperty IsTeamLeaderProperty =
DependencyProperty.Register("IsTeamLeader", typeof(bool),
typeof(MainMenu), new FrameworkPropertyMetadata(false));
public bool IsTeamLeader
{
get { return (bool)GetValue(IsTeamLeaderProperty); }
set { SetValue(IsTeamLeaderProperty, value); }
}
在我的用户控件的“加载事件”中,我使用false 初始化我的属性,因此按钮应该被折叠。
private void ViewPage_Loaded(object sender, RoutedEventArgs e)
{
this.IsTeamLeader = false;
}
但这行不通。无论IsTeamLeader 属性在启动时具有哪个值,按钮始终可见。
所以你能帮我并给我一个提示我在哪里做错了吗? BooleanToVisiblityConverter 有问题还是我的依赖属性实现有问题?还是什么?
谢谢!
【问题讨论】:
-
嗯 - 从来没有? ;) 也许这就是问题所在?
-
是的,可能是这个问题:),在 ctor 中试试这个:
this.DataContext = this -
嘿,谢谢!你太棒了 :) 这就是问题所在。现在我的代码有效。我想现在我明白了这个问题。找不到我的财产,因为没有指定在哪里搜索它 - 所以我想。
-
@kmatyaszek - 将其写为答案,Gery87 接受该答案(并可选择投票)。你们都得到积分,问题被标记为已关闭。每个人都赢了!
标签: c# .net wpf xaml dependency-properties