0

我正在我的 DataGrid 中创建一个列

<DataGridTextColumn Header="Deploy" Binding="{Binding Deploy}" Width="100" IsReadOnly="True" CanUserSort="False"/>

在我的代码中,我正在使用向我的网格中的列添加行

Public Structure MyRow
    Public Property Deploy As String
End Structure



MyGrid.Items.Add(New MyRow With {.Deploy= "Unlimited"})

我真正想做的是在这个 Deploy 字段中,我想显示依赖于值的两个按钮之一。如果我的值为 0,我想显示

<Button Grid.Column="3" Padding="0" Content="A" Margin="5,8,5,12" Height="50" TextBlock.TextAlignment="Center" />

如果我有值 -1 我想显示

<Button Grid.Column="3" Padding="0" Content="B" Margin="5,8,5,12" Height="50" TextBlock.TextAlignment="Center" />

任何关于如何的帮助将不胜感激!我试过使用 CellTemplateSelector

<Page.Resources>
    <DataTemplate x:Key="ATemplate">
        <Button Grid.Column="3" Padding="0" Content="A" Margin="5,8,5,12" Height="50" TextBlock.TextAlignment="Center" />
    </DataTemplate>
    <DataTemplate x:Key="BTemplate">
        <Button Grid.Column="3" Padding="0" Content="B" Margin="5,8,5,12" Height="50" TextBlock.TextAlignment="Center" />
    </DataTemplate>
</Page.Resources>


...
<DataGridTemplateColumn Header="A" Width="60" CanUserSort="False" CellTemplateSelector="{StaticResource ButtonTemplateSelector}" />
...

但是,当我向 DataGrid 添加一行时,我不知道如何应用此模板

提前致谢

4

1 回答 1

0

只需在以下实现您的逻辑ButtonTemplateSelector

Public Class ButtonTemplateSelector
    Inherits DataTemplateSelector

    Public Property ATemplate As DataTemplate
    Public Property BTemplate As DataTemplate

    Public Overrides Function SelectTemplate(item As Object, container As DependencyObject) As DataTemplate

        If item IsNot Nothing Then
            Dim myRow = CType(item, MyRow)
            If myRow.Deploy Is "0" Then
                Return ATemplate
            Else
                Return BTemplate
            End If
        End If

        Return MyBase.SelectTemplate(item, container)
    End Function

End Class

XAML:

<DataGridTemplateColumn Header="A" Width="60" CanUserSort="False" >
    <DataGridTemplateColumn.CellTemplateSelector>
        <local:ButtonTemplateSelector ATemplate="{StaticResource ATemplate}"
                                      BTemplate="{StaticResource BTemplate}" />
    </DataGridTemplateColumn.CellTemplateSelector>
</DataGridTemplateColumn>
于 2020-05-15T13:46:42.690 回答