我在数据网格模板中有一个组合框。 我有一个事件触发器来调用命令。我已经确认该命令正在调用我的函数。 当我的函数返回false时,我想将组合框的背景颜色设置为黄色。如果返回true,我希望它保持白色。
问题似乎在以下部分:
“路径= DataContext.ApplicationProfilesCollection []。ValidEnvironment”
在输出窗口中,我得到:
“System.Windows.Data错误:40:BindingExpression路径错误:'[]' 'object'上找不到属性''ObservableCollection`1' (的HashCode = 44314665)”。 BindingExpression:路径= DataContext.ApplicationProfilesCollection [] ValidEnvironment; DataItem ='ProfilesUserControl'(Name ='');目标元素是'ComboBox' (名称= ''); target属性是'NoTarget'(类型'Object')“
目前该系列中有3件商品。你知道我如何让世界粮食计划署认出每一个人吗? XAML中的“[]”有什么用处吗? 另外 - 我必须遵守MVVM模式。
请参阅下面的XAML。 谢谢你的时间,
<DataTemplate DataType="models:ApplicationProfile">
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType={x:Type UserControl}},
Path=DataContext.DsnCollection}"
Validation.ErrorTemplate="{StaticResource ValidationTemplate}"
SelectedItem="{Binding DataSource, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.ValidateDataSourceCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.ApplicationProfilesCollection[].ValidEnvironment}" Value="false">
<Setter Property="ComboBox.Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
答案 0 :(得分:0)
ValidEnvironment
应该是bool
集合(ItemsSource
中某个项目的公开 DsnCollection
属性 )您为集合中的每个项目(true
或您称之为的任何项目)设置为false
/ Dsn
。
然后你可以像这样绑定它:
<Style TargetType="ComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding ValidEnvironment}" Value="False">
<Setter Property="ComboBox.Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
您无法将DataTrigger
绑定到命令,因为命令不会返回任何内容。