所以我有一些类似于以下的代码:(请原谅任何拼写错误——我试图在帖子的 SO 编辑器中简化)
<my:CustomContentControl>
<my:CustomContentControl.Style>
<Style TargetType="{x:Type my:CustomContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=CurrentView}" Value="MyCustomView">
<Setter Property="Content">
<Setter.Value>
<my:CustomView DataContext="{Binding DataContextForMyCustomView"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</m:CustomContentControl.Style>
</my:CustomContentControl>
问题是,每当DataTrigger
发生这种情况时,setter确实将Content
属性设置为my:CustomView
,但它没有bind DataContext
。如果我将相同的代码移到触发器之外,则DataContext
绑定工作得很好。
有任何想法吗?如果这是某种限制,是否有任何解决方法?
更新:
我在输出窗口中收到以下错误:
System.Windows.Data Error: 3 : Cannot find element that provides DataContext. BindingExpression:Path=DataContextForMyCustomView; DataItem=null; target element is 'CustomView' (Name='customView'); target property is 'DataContext' (type 'Object')