gpt4 book ai didi

c# - 在 GridControl.View 中绑定(bind) IsEnabled 属性

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:57 25 4
gpt4 key购买 nike

我尝试在上下文菜单项中绑定(bind) IsEnabled 属性。上下文菜单放置在 Devexpress GridControl.View 中。

我假设问题出在 DataContext 中。 barbutton 项正在网格的 DataContext 中搜索属性 HasPermissionDelete。但这不是 View 模型的数据上下文。我的属性 HasPermissionDelete 在 ViewModel 上。

我正在使用 caliburn.micro。

你能帮我修复这个绑定(bind)吗?

我的 xaml 代码:

<dxg:GridControl.View>
<dxg:TableView x:Name="gridTable" AllowSorting="True" NavigationStyle="Row" MultiSelectMode="Row" AutoWidth="True" AllowEditing="False" AllowFilterEditor="True" AllowDrop="True" AllowGrouping="True" ShowGroupPanel="False" AllowMoveColumnToDropArea="True" SelectedRowsSource="{Binding SelectedUsers}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="RowDoubleClick">
<cal:ActionMessage MethodName="Edit" />
</i:EventTrigger>

<i:EventTrigger EventName="Loaded">
<cal:ActionMessage MethodName="InitializePrintableSource" >
<cal:Parameter Value="{Binding ElementName=gridTable}"></cal:Parameter>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>

<dxg:TableView.RowCellMenuCustomizations>
<dxb:BarButtonItem x:Name="btnDelete" Content="{lex:LocText Translations:Delete, Assembly=Prosa.Common.Modules.UserManagement}" IsEnabled="{Binding Path=HasPermissionDelete}"/>
</dxg:TableView.RowCellMenuCustomizations>
</dxg:TableView>
</dxg:GridControl.View>

最佳答案

即使您使用 Caliburn Micro,您仍然可以回退到标准 XAML 绑定(bind)。我将假设您的 DevExpress DataGrid 位于一个简单的 Grid 中,它是您的 Page 或 UserControl 的根元素。所以,你会有这样的结构:

<Grid x:Name="root">

<dxg:GridControl>
...
(your GridControl.View and everything else here)
...
</dxg:GridControl>
</Grid>

因此,为避免在您的按钮中使用 GridControl 的 DataContext,您可以绑定(bind)到根网格的 DataContext,在本例中为相应的 ViewModel。像这样绑定(bind)你的按钮:

<dxb:BarButtonItem x:Name="btnDelete" Content="{lex:LocText Translations:Delete, Assembly=Prosa.Common.Modules.UserManagement}" 
IsEnabled="{Binding ElementName=root, Path=DataContext.HasPermissionDelete}"/>

通过设置元素的名称(本例中为“root”),然后在绑定(bind)中引用它,您始终可以通过这种方式获得所需的数据上下文。您也可以绑定(bind)到没有名称的元素,但绑定(bind)表达式要复杂得多(您必须使用 RelativeSource 并选择元素类型)。

希望这能解决您的问题!

关于c# - 在 GridControl.View 中绑定(bind) IsEnabled 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14308171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com