在WPF DevExpress网格中禁用/启用运行时的超链接
本文关键字:启用 运行时 超链接 WPF DevExpress 网格 | 更新日期: 2023-09-27 17:57:35
我正在使用DevExpress Grid控件。这是我的网格结构:
<dxg:GridControl x:Name="grd_NoPartNumberLinesapprovedbutnotReceived" Height="600">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="emo_number" Header="EMO" VisibleIndex="10" AllowEditing="False">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<Hyperlink NavigateUri="{Binding Data.Hyperlink}"
Click="ClickonEmoHyperlink"
TargetName="_blank">
<TextBlock Text="{Binding Data.emo_number}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView x:Name="vwNoPartNumberLinesapprovedbutnotReceived" AutoWidth="True" ShowGroupPanel="False" />
</dxg:GridControl.View>
</dxg:GridControl>
Problem
现在我想在运行时基于某些条件禁用超链接,否则在其他情况下它将被启用。
您可以像其他属性一样,将Hyperlink控件的IsEnabled
属性直接绑定到视图模型中的属性。
<Hyperlink NavigateUri="{Binding Data.Hyperlink}"
Click="ClickonEmoHyperlink" TargetName="_blank">
<TextBlock Text="{Binding Data.emo_number}"
IsEnabled="{Binding Data.IsEnabled}"/>
</Hyperlink>
在这种情况下,您可以使用DataTrigger
:
表示在绑定数据满足指定条件时应用属性值或执行操作的触发器。
示例:
<DataTemplate>
<TextBlock Name="MyTextBlock" Tag="True">
<Hyperlink Name="MyHyperlink" Click="Hyperlink_Click">
<TextBlock Text="TestText" />
</Hyperlink>
</TextBlock>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Tag, ElementName=MyTextBlock}" Value="True">
<Setter TargetName="MyHyperlink" Property="IsEnabled" Value="True" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Tag, ElementName=MyTextBlock}" Value="False">
<Setter TargetName="MyHyperlink" Property="IsEnabled" Value="False" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
如果TextBlock的Tag
将为True,则启用Hyperlink
,否则将禁用。
此外,还可以在DataTrigger
中绑定属性。在数据中添加一些属性,例如HyperlinkIsEnabled
,并在DataTrigger中写入以下内容:
<DataTrigger Binding="{Binding Path=HyperlinkIsEnabled}" Value="False">
<Setter TargetName="MyHyperlink" Property="IsEnabled" Value="False" />
</DataTrigger>
若要成功更新属性,Data
类必须实现INotifyPropertyChanged
接口。