【发布时间】:2012-06-01 20:54:30
【问题描述】:
我正在尝试通过 XAML 将依赖项属性绑定到我的自定义 WPF 控件。
我是这样注册依赖属性的:
public static readonly DependencyProperty AltNamesProperty =
DependencyProperty.Register ("AltNames", typeof(string), typeof(DefectImages));
public string AltNames
{
get { return (string) GetValue(AltNamesProperty); }
set { SetValue(AltNamesProperty, value); }
}
我在 XAML 中是这样称呼它的:
<DataGrid.Columns>
<DataGridTemplateColumn IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Name="StackPanel1" Grid.Column="0" Width="950">
<TextBlock FontSize="16" TextDecorations="None" Text="{BindingPath=StandardName}" Foreground="Black" FontWeight="Bold" Padding="5,10,0,0"></TextBlock>
<TextBlock Text="{Binding Path=AltNames}"TextWrapping="WrapWithOverflow" Padding="5,0,0,10"></TextBlock>
<!-- this part should be magic!! -->
<controls:DefectImages AltNames="{Binding Path=AltNames}"></controls:DefectImages>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
我知道我尝试绑定的AltNames 属性是一个有效属性,因为我可以在文本块中很好地显示它。我是否错误地注册了 Dependency 属性?
我需要怎么做才能在后面的代码中为AltNames 分配正确的值?
【问题讨论】:
-
你试过
AltNames="{Binding Path=AltNames, Mode=TwoWay}"吗?运行时输出窗口是否有绑定错误? -
@nemesv 只是尝试了两种方式绑定,但没有运气。输出窗口中没有绑定错误。
-
这很可能被 2 个共享相同名称的属性混淆了。你试过重命名一个吗?您标记为答案的解决方法似乎很奇怪!
-
在我的例子中,该属性没有在我的
UserControl的构造函数中设置,但它在Loaded事件中。