我有课标记
class Marker {
public double Position {get; set;}
public string Label {get; set;}
}
和自定义控件,除其他属性外,还公开标记集合
class MyControl {
public ObservableCollection<Marker> Markers {get; set;}
}
我想模仿 ItemsControl 行为并允许我的组件的用户直接或通过使用 ItemsSource 类比来指定标记。此外,我希望这两种方法都支持数据绑定(最好在 XAML 中)
直接标记
<my:MyControl>
<my:MyControl.Markers>
<my:Marker Position="{Binding X}" />
</my:MyControl.Markers>
</my:MyControl>
使用 MarkersSource 的标记
<my:MyControl MarkersSource={Binding UserSpecifiedCollection}">
</my:MyControl>
第一种方法非常简单,但我正在为第二种方法苦苦挣扎。
如何实现 MarkesSource?如何将 UserSpecifiedCollection 的项目转换为 Marker 类型?UserSpecifiedCollection 项的属性如何数据绑定到 Marker 的属性?
关于转换,我认为可以使用 ValueConvertor,但我更喜欢纯 XAML 解决方案,比如 DataTemplates。有可能的?