1

我正在自定义 ListView 的 DataGridColumns。

我有很多情况:

1-有时,列标题只是一个单词'Id',在这种情况下我使用以下代码:

<GridViewColumn Width="Auto"
                DisplayMemberBinding="{Binding Id}"
                Header="Id" />

2-有时,列标题由许多单词组成,在这种情况下,我使用带有 TextWrapping 的 TextBlock 将它们显示在多行中:

<GridViewColumn Width="85"
                DisplayMemberBinding="{Binding ManyWordsColumnHeader}" >
    <GridViewColumnHeader>
        <TextBlock Text="Many words column header"
                   TextWrapping="Wrap" />
    </GridViewColumnHeader>
</GridViewColumn>

3-有时,行的内容是多重绑定的(同时有许多属性),如下所示:

<GridViewColumn Header="Fist name & last name">
    <GridViewColumn.CellTemplate>
        <DataTemplate DataType="models:PersonClass">
            <TextBlock>
                <TextBlock.Text>
                    <MultiBinding StringFormat="{}{0} {1}">
                        <Binding Path="FirstName" />
                        <Binding Path="LastName" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

如果我有一个由多个单词组成的列标题名称,并且行的内容应该多重绑定到多个属性,我该怎么办?

换句话说:我想把第二种和第三种情况结合起来!

4

2 回答 2

1

我还没有真正玩过GridView,但这种方法对我来说似乎是合乎逻辑的尝试(以防万一你没有)。只需将第 3 点中的 XAML 与第 2 点结合起来:

<GridViewColumn Width="85" >
    <GridViewColumn.CellTemplate>
        <DataTemplate DataType="models:PersonClass">
            <TextBlock>
                <TextBlock.Text>
                    <MultiBinding StringFormat="{}{0} {1}">
                        <Binding Path="FirstName" />
                        <Binding Path="LastName" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
    <GridViewColumnHeader>
        <TextBlock Text="Many words column header"
                   TextWrapping="Wrap" />
    </GridViewColumnHeader>
</GridViewColumn>

那里有一列“由许多单词组成的列标题名称和多绑定到许多属性的行的内容”。

于 2014-02-28T14:39:07.263 回答
0

您在这里有几个选择。

  1. 将标题的 Content 更改为 ListView,并将 ItemSource 设置为标题行列表。

  2. 添加一个MultiValueConverter从所有绑定中获取所有值并返回由 Environment.NewLine 分隔的字符串。

于 2014-02-28T15:54:11.557 回答