简体   繁体   English

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

[英]WPF Datagrid.Row AlternationIndex MultiTrigger Property and Viewmodel

I wonder why this doesn't works: 我不知道为什么这行不通:

<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>

this code throws InvalidOperationException "Must have non-null value for 'Property'". 此代码将引发InvalidOperationException““属性”必须具有非null值”。 IsTiket is a property of Datacontext which Datagrid is binded to IsTiket是Datacontext的属性,Datagrid绑定到该属性

This code works but I need MultiTrigger: 这段代码有效,但是我需要MultiTrigger:

<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>

SOLUTION: Syntax error, I have to use MultiDataTrigger: 解决方案:语法错误,我必须使用MultiDataTrigger:

<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>

You're using a multitrigger rather than a multidatatrigger. 您使用的是多重触发,而不是多重数据触发。 Try 尝试

<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>

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

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