根据条件更改行颜色

时间:2019-04-01 12:53:51

标签: c# wpf data-binding

我必须根据条件动态更改行颜色。

到目前为止,我已经尝试了两种方法:

1->我编写了一个转换器,并将行绑定到xaml中。在转换器中,我能够管理我的工作。

2->我想直接在xaml中使用DataTrigger。绑定我的列值并检查true / false,然后显示网格。

我在我的项目中注意到,人们已经在这样做,但是这种方法对我不起作用。我想,我的约束力不正常。

我的代码和其他人的代码之间唯一的区别如下:

他们将datacontext设置为VMModel,并在同一VMModel类中定义了一个列,并像Datacontext.Column一样访问它的Binding。

对我来说,该列不在直接的VMModel中。 我有VMModel,而VMModel的ModelIfo类扩展了一个基类。 我的专栏是在BaseClass中。

我尝试将其绑定很多,但无法完成。

请尝试建议。 开放以寻求更好的方法。

这是我的代码-:

XAML文件:



    <UserControl.DataContext>
        <vm:VMViewModel/>
    </UserControl.DataContext>
    <UserControl.Resources>
        <conv:BooleanVisibilityConverter x:Key="booleanVisibilityConverter" />
        <Style x:Key="RowStyle" TargetType="dxg:RowControl" >
            <Style.Triggers>
                <DataTrigger Binding="{Binding Row.PropertyName}" Value="false">
                    <Setter Property="Foreground" Value="Red"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </UserControl.Resources>
    <Grid>
        <dxg:GridControl x:Name="gcMain"  AutoGenerateColumns="None" EnableSmartColumnsGeneration="True" 
        HorizontalAlignment="Stretch" Margin="0,0,0,36" VerticalAlignment="Stretch" ItemsSource="{Binding Data}" SelectionMode="Row"
        SelectedItem="{Binding SelectedItem}">
            <dxg:GridControl.Columns>

                <dxg:GridColumn FieldName="Name" Header="FirstName" IsSmart="True">
                    <dxg:GridColumn.EditSettings>
                        <dxe:TextEditSettings MaxLength="50"/>
                    </dxg:GridColumn.EditSettings>
                </dxg:GridColumn>

            <dxg:GridControl.View>
                <dxg:TableView x:Name="ResultsTableView" 
                               RowStyle="{StaticResource RowStyle}" AllowEditing="True" AutoWidth="False" AllowPerPixelScrolling="True" ShowTotalSummary="False" AllowGrouping="False" AllowMoveColumnToDropArea="False" IsGroupFooterMenuEnabled="False" IsGroupPanelMenuEnabled="False" IsRowCellMenuEnabled="False" IsTotalSummaryMenuEnabled="False" NewItemRowPosition="Bottom" ShowGroupPanel="False" NavigationStyle="Cell" ShowSearchPanelMode="Always">
                </dxg:TableView>
            </dxg:GridControl.View>

        </dxg:GridControl>

    </Grid>
</UserControl>

在C#中:

public class ViewModel : BaseUpdatableViewModel<ModelInfo>

public class ModelInfo : BaseModel

public abstract class BaseModel : IModelInfo 
{
 // Here is the column. Which I want to bind it.
}

0 个答案:

没有答案