在Style Setter中从DataContext获取值到MarkupExtension

时间:2017-05-26 13:40:28

标签: c# .net wpf xaml markup-extensions

我有一个 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实例)?
这可能吗?

1 个答案:

答案 0 :(得分:1)

  
      
  1. 如何在ProvideValue覆盖方法中获取ListBoxItem.DataContext(它必须是ColorfullItem实例)?
  2.   

你真的不可能。您可以访问根元素,但不能访问实际应用setter的元素:

Accessing "current class" from WPF custom MarkupExtension

  
      
  1. 可能吗?
  2.   

没有。如果需要,您应该考虑实施附加行为或其他内容,而不是自定义标记扩展:https://www.codeproject.com/Articles/28959/Introduction-to-Attached-Behaviors-in-WPF