首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF Datagrid.Row AlternationIndex MultiTrigger属性和视图模型

WPF Datagrid.Row AlternationIndex MultiTrigger属性和视图模型
EN

Stack Overflow用户
提问于 2018-04-03 19:19:16
回答 1查看 297关注 0票数 0

我想知道为什么这个不起作用:

代码语言:javascript
复制
<DataGrid AlternationCount="2"...

<DataGrid.RowStyle>
   <Style TargetType="{x:Type DataGridRow}">
      <Style.Triggers>
         <MultiTrigger>
           <MultiTrigger.Conditions>
              <Condition Binding="{Binding AlternationIndex, RelativeSource={RelativeSource Self}}" Value="0" />
              <Condition Binding="{Binding IsTicket}" Value="False" />
           </MultiTrigger.Conditions>
           <MultiTrigger.Setters>
              <Setter Property="Background" Value="White" />
            </MultiTrigger.Setters>
         </MultiTrigger>
      </Style.Triggers>
   </Style>
</DataGrid.RowStyle>

此代码抛出InvalidOperationException“必须具有‘Property’的非空值”。IsTiket是Datagrid绑定到的Datacontext的属性

这段代码可以工作,但我需要MultiTrigger:

代码语言:javascript
复制
<DataGrid.RowStyle>
    <Style TargetType="{x:Type DataGridRow}">
        <Style.Triggers>
            <Trigger Property="AlternationIndex" Value="0">
                <Setter Property="Background" Value="White" />
            </Trigger>
            <DataTrigger Binding="{Binding IsTicket}" Value="True">
               <DataTrigger.Setters>
                  <Setter Property="Background" Value="Gold" />
               </DataTrigger.Setters>
             </DataTrigger>
        </Style.Triggers>
    </Style>
 </DataGrid.RowStyle>

解决方案:语法错误,我必须使用MultiDataTrigger:

代码语言:javascript
复制
<DataGrid.RowStyle>
   <Style TargetType="{x:Type DataGridRow}">
      <Style.Triggers>
         <MultiDataTrigger>
           <MultiDataTrigger.Conditions>
              <Condition Binding="{Binding AlternationIndex, RelativeSource={RelativeSource Self}}" Value="0" />
              <Condition Binding="{Binding IsTicket}" Value="False" />
           </MultiDataTrigger.Conditions>
           <MultiDataTrigger.Setters>
              <Setter Property="Background" Value="White" />
            </MultiDataTrigger.Setters>
         </MultiDataTrigger>
      </Style.Triggers>
   </Style>
</DataGrid.RowStyle>
EN

回答 1

Stack Overflow用户

发布于 2018-04-03 20:02:34

您使用的是多触发器,而不是多数据触发器。试一试

代码语言:javascript
复制
<Style TargetType="{x:Type DataGridRow}">
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding Path=AlternationIndex, RelativeSource={RelativeSource Self}}" Value="0" />
                <Condition Binding="{Binding IsTicket}" Value="False" />
            </MultiDataTrigger.Conditions>
            <Setter Property="Background" Value="White" />
        </MultiDataTrigger>
    </Style.Triggers>
</Style>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49628771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档