【问题标题】:How to access a Converter in XAML when the codebehind contains the IValueConverter implementation当代码隐藏包含 IValueConverter 实现时如何在 XAML 中访问转换器
【发布时间】:2011-09-06 18:54:09
【问题描述】:

鉴于以下情况:

public partial class MyCustomControl : UserControl, IValueConverter

我将如何设置 XAML 以访问已(自行)创建的控件实例以进行转换?

<TextBlock Text="{Binding Converter={ ??? }}" />

我这样做的原因是因为我在控件上有一个 DP,它告诉我需要反映对象的哪些属性才能在该 TextBlock 的文本中显示它的值。所以......如果我在代码隐藏中实现 IValueConverter,并告诉它使用它作为转换器,只要它使用相同的实例,我应该能够得到我需要的一切。

谢谢!

【问题讨论】:

  • 我肯定会建议将您的逻辑更改为它自己的类型,仅仅是因为它是关注点分离。您的用户控件不必也是 TypeConverter;这是一个不同的逻辑事物。然后使用 TypeConverter 也变得非常容易。
  • 您是否尝试使用 (self) 关键字?
  • 问题是让属性在那个时候反映出来。如果我有一个单独的转换器,我唯一会看到的是绑定到该项目的对象。考虑到这是一个用户控件,并且在控件的用户设置它之前我需要反映的属性是未知的,所以我需要一种方法来获取该对象以及要反映的属性。
  • 是的,我自己试过了,没用。
  • 您是否尝试将 MyCustomControl 声明为静态资源并将其静态链接到 Converter?

标签: c# .net wpf silverlight


【解决方案1】:

坏主意,创建一个单独的转换器。如果您需要更多信息,只需向其中添加属性(例如,一个用于整个 UserControl)

【讨论】:

    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多