0

我的“应用程序”有一个 DataGrid,它的源是一个 DataTable。DataTable 填充有如下对象:

public class DataWrapper : INotifyPropertyChanged
{
    public String Value { get; set {...} } // Changes fire PropertyChangeEvent
    public bool IsMinimized { get; set {...} } // Changes fire PropertyChangeEvent

    // Other code to implement INotifyPropertyChanged
}

这里的一般想法是,Value属性可以是“完全”最小化的形式,也可以不是,我们可以通过查看在IsMinimized其他地方设置的属性来检查它是否是。

当用户修改 DataGrid 中的单元格时,更改会Value执行检查以确定值是否最小化,然后设置IsMinimized属性,进而触发PropertyChanged事件。我想让每个单元格上的样式用黄色勾勒出单元格 if IsMinimizedis False,否则没有轮廓。

我已经能够让最初的黄色轮廓发生,但是当Value属性被修改时,我无法让绑定刷新。我将此归因于我正在处理DataRowView绑定中的一个事实。作为参考,这里是单元格样式的片段:

    <Style TargetType="{x:Type DataGridCell}" x:Key="GridCellStyle">         
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridCell}">                        
                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <Grid Background="{TemplateBinding Background}">
                            <ContentPresenter VerticalAlignment="Center" />                                
                        </Grid>                        
                    </Border>
                </ControlTemplate>                    
            </Setter.Value>
        </Setter>
        <Style.Triggers>       
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource CellIsMinimizedConverter}}" Value="False" />                     
                <Setter Property="BorderBrush" Value="Yellow" />
                <Setter Property="BorderThickness" Value="1" />                    
            </DataTrigger>                
        </Style.Triggers>                        
    </Style>

转换器CellIsMinimizedConverter用于基于 拉取IsMinimized当前列的属性DataRowView,但我不确定如何更改IsMinimized属性以触发它。

注意: 我不能使用验证规则,因为用户可以输入非最小值。

4

0 回答 0