Мне нужно динамически изменить цвет строки в зависимости от условия.
Я пробовал два подхода:
1 -> Я написал конвертер и связал строку в xaml. В конвертере я могу управлять своей работой.
2 -> Я хотел использовать DataTrigger в xaml напрямую. Свяжите значение моего столбца и отметьте true / false и отобразите сетку.
Я заметил в своем проекте, что люди уже так поступают. Однако этот подход не работает для меня. Я думаю, моя привязка ведет себя не так, как должно быть.
Единственное различие, которое я мог видеть между моим кодом и кодом другого, заключается в следующем:
Они устанавливают для datacontext значение VMModel и имеют столбец, определенный в том же классе VMModel, и доступ к нему Binding, как Datacontext.Column.
Для меня, colum не в немедленной 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.
}