0

私の「アプリケーション」には、ソースとして DataTable を持つ DataGrid があります。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イベントが発生します。IsMinimized各セルのスタイリングで、 is の場合は黄色でセルの輪郭を描き、それ以外の場合は輪郭を持たないようにしたいと思い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が使用されていますが、これをトリガーするためにプロパティを変更する方法がわかりません。IsMinimizedDataRowViewIsMinimized

注: ユーザーが最小化されていない値を入力しても問題ないため、検証ルールを使用できません。

4

0 に答える 0