我必须根据条件动态更改行颜色。
到目前为止,我尝试了两种方法:
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.
}