【发布时间】:2013-01-31 05:26:32
【问题描述】:
我有一种可怕的感觉,我正在尝试做的事情无法完成,但就是这样。也许有更好的方法。
我在一个单独的文件中有一个 ResourceDictionary,被拉入一个 UserControl(视图):
<UserControl.Resources>
<ResourceDictionary Source="..\Resources.xaml"/>
</UserControl.Resources>
在 RD 中,我定义了一些按钮样式,其中之一包括一个 Condition,如果“IsCurrentFilter”转换器返回 True,则将 Foreground 设置为 Red:
<Style x:Key="FilterButton" TargetType="Button" BasedOn="{StaticResource ButtonBase}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Converter={StaticResource IsCurrentFilter}}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="Foreground" Value="Red" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
转换器在同一个RD中定义,更上一层:
<util:IsCurrentFilterConverter x:Key="IsCurrentFilter" ViewModel="{Binding}"/>
问题是转换器无法访问视图模型(它需要它来进行比较),并且ViewModel 属性只是拒绝绑定到任何东西。错误是...
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:(no path); DataItem=null; target element is 'IsCurrentFilterConverter' (HashCode=50804710); target property is 'ViewModel' (type 'Object')
...这有点道理,据我所知,它不在可视化树中。
那么,我怎样才能绑定到这个 ResourceDictionary 中的视图模型呢?
【问题讨论】:
标签: c# .net wpf caliburn.micro multidatatrigger