0

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

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

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

2 -> 我想直接在 xaml 中使用 DataTrigger。绑定我的列值并检查真/假并显示网格。

我注意到在我的项目中,已经有人这样做了。但是这种方法对我不起作用。我想,我的绑定没有按应有的方式运行。

我可以看到我的代码和其他代码之间的唯一区别如下:

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

对我来说,列不在直接 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.
}

4

0 回答 0