WPF datagrid sütununda farklı veri şablonu yükle

0

Soru

Bir WPF veri kılavuzunda tanımlanmış bir sütun için farklı bir veri şablonu yüklemek mümkün mü?

XAML'M şuna benziyor:

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

Buradaki amaç, bağlama sırasında ayrı bir veri şablonu yüklemektir IsStarted görünürlük false olarak ayarlandığında, başka bir deyişle false olarak ayarlanır.

Buradaki amaç, booleanı "yanlış" olarak ayarlayacak belirli bir düğme tetiklendiğinde, mevcut öğeler yerine bu kendi sütununda başka bir veri şablonu görünür olacaktır.

Örnek olarak, düğmenin yürütülmesinden sonra boole değeri false olarak ayarlandıktan sonra aşağıdaki XAML görüntülenmelidir,

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

Bu mümkün mü?

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

En iyi cevabı

1

Replace edebilirsin CheckBox in the DataTemplate bir ile ContentControl ve kullanım Style bir ile DataTrigger yerine onun ContentTemplate değerine göre IsStarted parametre:

<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

Diğer dillerde

Bu sayfa diğer dillerde

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