我有一个 WPF MarkupExtension ,用于修改 ListBoxItem 属性,例如Background。此Background新值基于 ListBoxItem.DataContext 和MarkupExtension属性,例如Color。
List
我的MarkupExtension是:
<ListBox ItemsSource="{Binding ColorfullItems}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Background" Value="{Helpers:MyMarkupExtension Color=Blue}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
1。如何在ProvideValue覆盖方法中获取ListBoxItem.DataContext(它必须是ColorfullItem实例)?
这可能吗?
答案 0 :(得分:1)
- 如何在ProvideValue覆盖方法中获取ListBoxItem.DataContext(它必须是ColorfullItem实例)?
醇>
你真的不可能。您可以访问根元素,但不能访问实际应用setter的元素:
Accessing "current class" from WPF custom MarkupExtension
- 可能吗?
醇>
没有。如果需要,您应该考虑实施附加行为或其他内容,而不是自定义标记扩展:https://www.codeproject.com/Articles/28959/Introduction-to-Attached-Behaviors-in-WPF