Изменение цвета строки в зависимости от состояния - PullRequest
0 голосов
/ 01 апреля 2019

Мне нужно динамически изменить цвет строки в зависимости от условия.

Я пробовал два подхода:

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.
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...