wpf - WPF如何在后面的代码中检索绑定属性
问题描述
在我的遗留项目中,我需要通过后面的代码获取绑定属性名称。XAML:
<DataGridTextColumn MinWidth="180" MaxWidth="180" Width="Auto" Binding="{Binding ConfigObject.MAC_Descr}" Header="Descr" Foreground="Black">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="6,12" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsDirty}" Value="True">
<Setter Property="TextBlock.Background" Value="{StaticResource IsDirtyColor}" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="Background" Value="White"/>
<Setter Property="Padding" Value="5,12"/>
<Setter Property="BorderThickness" Value="0"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
我使用的事件:
private void Row_DoubleClick(object sender, MouseButtonEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
DataGridCell row = sender as DataGridCell;
if (row == null) return;
// Binding column name??
string bindingExpression = row.GetBindingExpression(TextBlock.TextProperty).ResolvedSourcePropertyName;
}
}
基本上在上述情况下,我需要检索“MAC_Descr”。有什么帮助吗?
解决方案
你可以尝试这样的事情:
private void OnCellDoubleClick(object sender, MouseButtonEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
if (!(sender is DataGridCell cell)) return;
if (!(cell.Column is DataGridTextColumn column)) return;
if (!(column.Binding is Binding binding)) return;
var path = binding.Path.Path;
}
}
推荐阅读
- regex - 尝试使用反向引用查找并替换为 sed,输出不是所需的结果
- python-3.x - 如何通过批处理文件执行 Python 代码并传递参数 - 使用 argparse
- javascript - 如何使用 React 和 React-Router 测试私有路由
- node.js - Parcel.js HMR & Socket.IO 冲突(新用户连接)
- python - 如何使用 Selenium 设置虚假的设备内存或 CPU 并发
- python - ttk.Button 清洁器更改声明的反应
- python - 删除高度相关的比率并保留与因变量更相关的比率
- html - 如何在 html 文件中输出 xml 内容?
- php - 我在页面上有一个 php 表单,但没有输入
- python - 为什么在 Google Colab 中重新启动运行时后 KMeans 的 silhouette_score 会发生变化?