Načítať rôzne údaje šablóny v WPF údajová mriežka stĺpec

0

Otázka

Je to možné načítať rôznych údajov šablóny pre definované stĺpca v WPF data grid?

Môj XAML vyzerá takto:

<DataGridTemplateColumn Header="Select">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox 
                  HorizontalContentAlignment="Center"
                  Visibility="{Binding IsStarted}"
                  VerticalAlignment="Center"
                  IsChecked="{Binding IsStarted, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                  Command="{Binding DataContext.Checked,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
                  CommandParameter="{Binding}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>

Cieľom je nahrať samostatné údaje šablóny keď záväzné IsStarted je nastavený na false, inými slovami, keď je možnosť viditeľnosť nastavená na false.

Zamýšľaný účel, tu je, keď niektoré tlačidlo je aktivované, ktoré budú stanovené boolean na "false" iné údaje šablóny bude viditeľný na to vlastný stĺpca namiesto v súčasnosti existujúce položky.

Ako príklad, nasledujúce XAML by sa zobrazí, akonáhle boolean je nastavená na false, po uzavretí tlačidlo,

<TextBlock Visibility="{Binding IsTrue}" Text="Hello" />

Je to možné?

binding datagrid wpf xaml
2021-11-22 07:13:27
1

Najlepšiu odpoveď

1

Mohli by ste vymeniť CheckBox v DataTemplate s ContentControl a použitie Style s DataTrigger nahradiť jeho ContentTemplate na základe hodnoty IsStarted parameter:

<DataGridTemplateColumn Header="Select">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding}">
                <ContentControl.Style>
                    <Style TargetType="ContentControl">
                        <Setter Property="ContentTemplate">
                            <Setter.Value>
                                <DataTemplate>
                                    <CheckBox 
                                        HorizontalContentAlignment="Center"
                                        Visibility="{Binding IsStarted}"
                                        VerticalAlignment="Center"
                                        IsChecked="{Binding IsStarted, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                        Command="{Binding DataContext.Checked,RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
                                        CommandParameter="{Binding}"/>
                                </DataTemplate>
                            </Setter.Value>
                        </Setter>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsStarted}" Value="False">
                                <Setter Property="ContentTemplate">
                                    <Setter.Value>
                                        <DataTemplate>
                                            <TextBlock Text="Some other template" />
                                        </DataTemplate>
                                    </Setter.Value>
                                </Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </ContentControl.Style>
            </ContentControl>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
2021-11-22 15:27:33

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................