在控件上显示自定义名称,而不是在ViewModel中显示变量名称

本文关键字:显示 ViewModel 变量名 自定义 控件 | 更新日期: 2023-09-27 17:49:24

我有一个这样的DataGrid:

 <DataGrid 
      x:Name="TotalMatch" 
      ItemsSource="{Binding TotalMatch}"/>

我正在使用ViewModel模式,所以在我的属性中,我在这种情况下创建了一个用于存储数据的ObservableCollection。这个集合的结构是TotalMatch:

public class TotalMatch
{
    public int InPlay { get; set; }
    public int Terminated { get; set; }
    public int Total { get; set; }
}

现在DataGrid列显示为变量名,所以:InPlay, Terminated等等。

我想知道是否有可能显示而不是自定义名称的变量名。

在控件上显示自定义名称,而不是在ViewModel中显示变量名称

@Pharoah是正确的-有一些标准的列类型你可以使用,最简单的是DataGridTextColumn。所以你可能会得到:

 <DataGrid 
      x:Name="TotalMatch" 
      ItemsSource="{Binding TotalMatchCollection}" AutoGenerateColumns="False"
>
    <DataGridTextColumn Header="In Play" Binding="{Binding Path=InPlay}" />
    <DataGridTextColumn Header="Terminated" Binding="{Binding Path=Terminated}" />
    <DataGridTextColumn Header="The Total" Binding="{Binding Path=Total}" />
</DataGrid>

我对你的绑定有点惊讶——你看起来是将ItemSource设置为ObservableCollection中的单个元素,而你通常会将它设置为整个集合。所以我赌了一把,改变了代码片段中的ItemsSource。

您可以为列提供自定义名称,在Datagrid中有HeaderText之类的属性,可以让您选择列名,但是您必须使用dataccolumn控件单独绑定每个列