【发布时间】:2012-01-25 10:50:57
【问题描述】:
我有一个用户控件,其属性定义如下:
public partial class ChartEx : UserControl
{
private object _dataSource;
public object DataSource
{
get { return _dataSource; }
set
{
_dataSource = value; //break here
}
}
}
在我的 xaml 中,我试图将它绑定到一个集合(来自内部数据模板):
<DataTemplate x:Key="tmplCounter">
<my:ChartEx
DataContext="{Binding Converter={StaticResource convTest}, ConverterParameter='DataContext'}"
DataSource="{Binding Converter={StaticResource convTest}, ConverterParameter='DataSource'}">
</my:ChartEx>
</DataTemplate>
但在调试器中,我看到 DataSource setter 的值是 System.Windows.Data.Binding 类型的!
值转换器从不使用参数“DataSource”输入,但对于“DataContext”,它可以完美运行。转换器仅用于调试目的,没有它,事情会以同样的方式工作。
如何使绑定对我定义的属性起作用?
【问题讨论】:
-
我不认为我完全理解你在这里想要完成的事情。为什么需要两次调用转换器?一次在 DataContext 中,一次在 DataSource 中?
-
我想在DataSource中调用它并获取值。 DataContext 只是为了显示相同的确切标记适用于继承的属性
-
您在 DataSource 中所做的是您通过调用将传递它的 getter 的方法来调用它的 setter。您是否尝试将图表的 DataContext 作为参数传递给转换器方法?您能否发布不起作用的场景代码以及转换器签名?你为什么试图通过传递数据上下文来转换数据上下文?
-
那个转换器什么都不做,我只是用它来监控是否发生了绑定。
-
在 XAML - _dataSource 字段被分配了一个 System.Windows.Data.Binding 类型的奇怪值。我刚刚想通了,很快就会结束这个问题。
标签: c# silverlight binding