如何将Silverlight Telerik RadGridView列绑定到多个属性?

时间:2011-10-17 15:57:24

标签: silverlight telerik radgridview

我有一个List,它绑定到Telerik RadGrid视图。一切正常。我的对象包含货币符号和价格两个属性。我用

 <telerik:GridViewDataColumn  DataMemberBinding="{Binding BallPrice}"  Header="Price"/>.

现在我绑定的对象也有一个当前符号。所以我希望这个列也包含那个货币符号,比如

<telerik:GridViewDataColumn  DataMemberBinding="{Binding BallPrice} +{Binding Symbol}"  Header="Price"/>. 

我该怎么做?

亲切的问候。

3 个答案:

答案 0 :(得分:1)

在这种情况下我要做的是在列中使用模板。所以它会是这样的。

<telerikGridView:GridViewDataColumn Header="Price">
<telerikGridView:GridViewDataColumn.CellTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding BallPrice}"/>
            <TextBlock Text="{Binding Symbol}"/>
        </StackPanel>
    </DataTemplate>
</telerikGridView:GridViewDataColumn.CellTemplate>

答案 1 :(得分:0)

您是否尝试添加DataFormatString =“{0:c}”?这应该将其格式化为货币。

答案 2 :(得分:0)

我不知道Multibinding是否适用于RadGridView中的列,但它是一个解决方案:

<telerik:GridViewDataColumn>
    <telerik:GridViewDataColumn.DataMemberBinding>
        <MultiBinding StringFormat="[{0} {1}]">
            <Binding Path="BallPrice" />
            <Binding Path="Symbol" />
         </MultiBinding>
     </telerik:GridViewDataColumn.DataMemberBinding>
</telerik:GridViewDataColumn>

但是,如果可以,我会考虑将新属性添加到组合这两个属性的对象:

public string Price
{
    get
    {
        return string.format("{0} {1}", this.BallPrice, this.Symbol);
    }
}

只需绑定即可。

如果你正在使用MVVM,那么它应该在ViewModel中运行得很好,如果它们可以在运行时改变,你可以在BallPrice和Symbol属性上设置NotifyPropertyChanged。