WPF:如何获取 Binding.Converter

发布于 2024-08-26 23:08:15 字数 621 浏览 5 评论 0原文

我使用 Binding 创建 DataGrid 列(其中 i 是 Int 值):

dataGrid.Columns.Add(new DataGridTextColumn
{
   Header = i.ToString(),
   Binding = CreateBinding(i),
});

private Binding CreateBinding(int num)
{
   Binding bind = new Binding(string.Format("[{0}]", num));         
   bind.Converter = new CellValueConverter();
   return bind;
}

在 CreateBinding 方法中,我可以访问 bind.Converter 属性。
我需要在某些处理程序中调用 Converter.Convert() 方法,但当我尝试访问它时没有 Converter 属性:

(dataGrid.Columns[clm] as DataGridTextColumn).Binding."no Converter property!"

如何获取为特定列创建的 CellValueConverter?

I create DataGrid Columns with Binding (where i is a Int value):

dataGrid.Columns.Add(new DataGridTextColumn
{
   Header = i.ToString(),
   Binding = CreateBinding(i),
});

private Binding CreateBinding(int num)
{
   Binding bind = new Binding(string.Format("[{0}]", num));         
   bind.Converter = new CellValueConverter();
   return bind;
}

In the CreateBinding method I have an access to bind.Converter property.
I need to call Converter.Convert() method in some handler, but there is no Converter property when I try to access it:

(dataGrid.Columns[clm] as DataGridTextColumn).Binding."no Converter property!"

How can I get my CellValueConverter which was created for particular Column?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ペ泪落弦音 2024-09-02 23:08:15

这是因为 绑定DataGridBoundColumn(和 DataGridTextColumn)上的 属性实际上返回一个 BindingBase 实例,而不是 BindingBindingBase 不支持转换器。

您应该能够尝试投射:

var binding = (dataGrid.Columns[clm] as DataGridBoundColumn).Binding as Binding;
if(binding != null)
{
    IValueConverter converter = binding.Converter; // Will work here
 }

This is because the Binding property on DataGridBoundColumn (and DataGridTextColumn) actually returns a BindingBase instance, not a Binding. BindingBase doesn't support converters.

You should be able to try to cast:

var binding = (dataGrid.Columns[clm] as DataGridBoundColumn).Binding as Binding;
if(binding != null)
{
    IValueConverter converter = binding.Converter; // Will work here
 }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文