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