如何仅让管理员可见WPF窗体按钮与DataGrid单元格按钮?
实现WPF按钮仅对管理员可见的方法
1. 确保IsAdmin属性可访问
先在ChatWindow类中将IsAdmin设为公开属性,保证后台代码和XAML都能访问到:
public bool IsAdmin { get; private set; } public ChatWindow(string currentUser, bool isAdmin) { InitializeComponent(); Username = currentUser; IsAdmin = isAdmin; // 其他初始化代码... }
2. 控制普通按钮的可见性
后台代码直接控制
如果你的普通按钮在XAML中有命名(比如adminBtn),在构造函数的InitializeComponent()之后添加逻辑:
adminBtn.Visibility = IsAdmin ? Visibility.Visible : Visibility.Collapsed;
XAML绑定方式(更优雅)
先在Window资源中声明布尔值转可见性的转换器:
<Window.Resources> <BooleanToVisibilityConverter x:Key="BoolToVis" /> </Window.Resources>
然后给按钮绑定IsAdmin属性:
<Button Content="管理员专属按钮" Visibility="{Binding IsAdmin, RelativeSource={RelativeSource AncestorType=Window}, Converter={StaticResource BoolToVis}}" />
3. 控制DataGrid单元格内按钮的可见性
方式一:后台遍历行控制
在窗口Loaded事件中遍历DataGrid行,找到按钮并设置可见性:
private void ChatWindow_Loaded(object sender, RoutedEventArgs e) { if (!IsAdmin) { foreach (var item in YourDataGridName.Items) { var row = YourDataGridName.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow; if (row == null) continue; var cellContent = YourDataGridName.Columns[目标列索引].GetCellContent(row); var addRoomButton = cellContent.FindName("addRoomButton") as Button; addRoomButton?.Visibility = Visibility.Collapsed; } } }
注意替换YourDataGridName和对应的列索引,同时要给窗口绑定Loaded事件。
方式二:XAML绑定(推荐)
直接在按钮的XAML中绑定窗口的IsAdmin属性,配合之前声明的转换器:
<DataGridTemplateColumn Header="Connect"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Content="Add room" Name="addRoomButton" Click="addRoomButton_Click" Visibility="{Binding DataContext.IsAdmin, RelativeSource={RelativeSource AncestorType=Window}, Converter={StaticResource BoolToVis}}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>
如果窗口未设置DataContext,可直接绑定窗口自身属性(需先在XAML顶部引入窗口命名空间xmlns:local="clr-namespace:你的项目命名空间"):
Visibility="{Binding IsAdmin, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:ChatWindow}}, Converter={StaticResource BoolToVis}}"
内容的提问来源于stack exchange,提问作者Death_Dealer
相关产品推荐
相关产品推荐

