我遇到了一个我试图实现的绑定问题。它会更新DP一次,但在此之后,它不会再次更新。将自定义DependencyProperty绑定到ListView.SelectedItem的问题
在XAML中,我有两个控件绑定到一个listview.selected项目。
<controls:MapControl DataContext="{Binding ElementName=availableMapsListView, Path=SelectedItem}" MapData="{Binding .}">
和
<TextBlock DataContext="{Binding ElementName=availableMapsListView, Path=SelectedItem}" Text="{Binding Name}" />
预期与ListView的选择项的每一个变化的文字块的更新。
我的定制控件创建依赖属性像这样:
public class MapControl : UserControl
{
public MapData MapData
{
get { return (MapData)GetValue(MapDataProperty); }
set { SetValue(MapDataProperty, value); }
}
public static readonly DependencyProperty MapDataProperty =
DependencyProperty.Register("MapData", typeof(MapData), typeof(MapControl),
new FrameworkPropertyMetadata(
null,
FrameworkPropertyMetadataOptions.AffectsRender,
new PropertyChangedCallback(OnMapDataPropertyChanged),
new CoerceValueCallback(OnMapCoerceValue)
)
);
private static void OnMapDataPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
if (e.NewValue != null)
{
((MapControl)source).MapData = (MapData)e.NewValue;
}
}
private static object OnMapCoerceValue(DependencyObject dpo, Object obj)
{
return obj;
}
...
}
我几乎在我束手无策,不知道我应该在这里做。任何帮助是极大的赞赏。
谢谢,这确实是罪魁祸首。我一拿出这条线,它就按预期工作。 – 2011-06-10 10:03:55