繁体   English   中英

WPF DataGrid模板列组合框绑定表达式错误

[英]WPF datagrid template column combobox binding expression error

我在datagrid模板中有一个组合框。 我对此有一个事件触发器,它调用命令。 我已经确认该命令正在调用我的函数。 当我的函数返回false时,我想将组合框的背景色设置为黄色。 如果返回true,我希望它保持白色。

问题似乎在以下部分中:

“ Path = DataContext.ApplicationProfilesCollection []。ValidEnvironment”

在输出窗口中,我得到:

“ System.Windows.Data错误:40:BindingExpression路径错误:'[]属性在'对象'上未找到'ObservableCollection`1'(HashCode = 44314665)'。 DataItem ='ProfilesUserControl'(Name ='');目标元素为'ComboBox'(Name ='');目标属性为'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>

ValidEnvironment应该是ItemsSource集合( DsnCollection )中某个项目的公共 bool 属性 ,您可以为该集合中的每个项目( Dsn或任何您称其为)设置为true / false

然后可以像这样绑定它:

<Style TargetType="ComboBox">
    <Style.Triggers>
        <DataTrigger Binding="{Binding ValidEnvironment}" Value="False">
            <Setter Property="ComboBox.Background" Value="Yellow"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

您无法将DataTrigger绑定到命令,因为命令不会返回任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM