使用数据绑定在ListBox中自定义计算字段

时间:2013-10-07 11:00:17

标签: c# windows-phone-7 mvvm custom-controls calculated-field

我正在制作我的第一个Windows Phone 7应用程序,它几乎已经完成,除了列表框中的计算字段。

我有一个带有id,名称和整数的数据库。我正在使用MVVM模式。根据具有某些计算的函数,我希望您显示YES或NOT作为ListBox的第一个字段的值,第二列是简单的名称。如何显示第一个字段?

这是我此时的代码(对于列表框):

    <ListBox x:Name="lstPills" Grid.Row="1" ItemsSource="{Binding AllItems}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid HorizontalAlignment="Stretch" Width="440">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="90" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Border Height="36" Width="60" CornerRadius="5" Background="Grey">
                        <TextBlock Text="HERE GOES YES or NOT" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="28"/>
                    </Border>
                    <TextBlock
                        Text="{Binding Name}"
                        FontSize="{StaticResource PhoneFontSizeLarge}"
                        Grid.Column="1"
                        VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

我有一个带有计算功能的类(只是一个例子):

    public static bool isRight(int value)
    {
        return (Math.Abs(value) % 2 == 0 ? true : false);
    }

是否有某种方法可以使用XAML中的bound参数调用此函数,以便反映结果?类似的东西:

<TextBlock Text="isRight(Binding myvalue)"/>

我还有我的模型和我的ViewModel。

1 个答案:

答案 0 :(得分:1)

尝试绑定此isRight属性

private int _lookupValue;
public bool isRight
    {
      get {
        return (Math.Abs(_lookupValue) % 2 == 0 ? true : false);
      }
    }

如果您认为这仍然不适用,那么您可以使用Converters