![](/img/trans.png)
[英]How to bind GridViewColumn's DisplayMemberBinding in code
[英]How to bind boolean to GridViewColumn checkboxes (have code but doesn't work)?
我试图将布尔值绑定到GridViewColumn
复选框,但是它不起作用。 我什至尝试仅返回false,但复选框仍处于启用状态。 仅当我在xaml中输入“ False”时,它才有效。
绑定的属性是:
public bool HasPermissions
{
get { return this.UserPrivileges == UserPrivileges.FullAccess; }
}
this.UserPrivileges
当前值不是UserPrivileges.FullAccess
。
XAML代码:
<Window x:Class="EffectsWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Effects Manager"
Width="800"
Height="500"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
<DockPanel VerticalAlignment="Stretch">
<DockPanel.Resources>
<ListView x:Name="EffectsListView"
ItemsSource="{Binding AllEffects}">
<ListView.View>
<GridView>
<GridViewColumn Width="50" Header="Override">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Margin="0"
HorizontalAlignment="Center"
IsEnabled="{Binding HasPermission}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</DockPanel>
</Window>
编辑:当前属性代码:
public bool HasPermissions
{
get { return this.UserPermissions == UserPermissions.FullAccess; }
set { this.RaisePropertyChanged ( "HasPermissions" ); }
}
考虑一下更新后的属性中的问题:该属性没有后备字段,它的getter返回将另一个属性与UserPermissions.FullAccess
进行比较的结果。 因此,它永远无法设置。
需要关注的事情是,何时需要通知UI HasPermissions
返回的值已更改? 那么,什么时候可以改变这个价值? 当this.UserPermissions
的值更改时,对吗?
假设this.UserPermissions
本身是带有setter的属性,则其setter是调用RaisePropertyChanged("HasPermissions")
。 这将告诉UI,即使它没有直接绑定到UserPermissions
, 也必须重新评估它绑定到的属性。
更新:关于您的评论, IsChecked
实际上是您应该将HasPermissions
绑定到的CheckBox属性,如果您希望框的选中状态指示用户具有权限。
更新第二个:听起来您想从一个可视子对象(ListBox)访问Window的DataContext属性。 您可以使用RelativeSource绑定来实现这一点,如下所示:
<CheckBox Margin="0"
HorizontalAlignment="Center"
IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.HasPermission}"/>
这种笨拙的表示法将在Window类型的可视树中找到最接近CheckBox的父元素,并绑定到其DataContext属性以查找HasPermission。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.