【问题标题】:Using MultiBinding when DataGridColum header was customized自定义 DataGridColumnheader 时使用 MultiBinding
【发布时间】:2014-04-01 13:28:49
【问题描述】:

我正在自定义 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>

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

换句话说:我想将第二种和第三种情况结合在一起!

【问题讨论】:

    标签: c# wpf xaml multibinding gridviewcolumn


    【解决方案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>
    

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

    【讨论】:

      【解决方案2】:

      这里有几个选项。

      1. 将标题的内容更改为 ListView,并使用 ItemSource 设置为标题行列表。

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

      【讨论】:

        猜你喜欢
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多