列表框数据模板更新

发布于 2024-12-13 13:57:06 字数 266 浏览 1 评论 0原文

我有一个带有列表框的 Windows Phone 7 应用程序。我创建了自己的模板选择器类,它根据绑定对象中的项目数量选择正确的数据模板。效果很好。但是我需要的,以及不能正常工作的是,当我更改绑定对象中的项目数量时,重新加载模板选择器并根据实际数量更新模板。 例如:具有属性 x > 的 ListItems当 x =< 9 时,颜色为红色9、颜色为绿色。当我使用页面按钮将此数字从 8 更改为 9 时,我需要更改颜色。它不起作用。看起来模板选择器仅在 navigatorTo 事件上被调用... 帮助:)

I have a Windows Phone 7 App with Listbox. I have created my own template selector class, that select proper datatemplate based on number of items in binded object. It works fine. But what I need, and what doesnt work fine, is when i change number of items in binded object, to reload template selector and update templates based on actual number.
For example: ListItems with property x > 9 have color red, when x =< 9, color is green. When i change this number with onpage button from 8 to 9 I need to change the color. And It doesnt work. Looks like template selector is called only on navigateTo event...
Help:)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

恬淡成诗 2024-12-20 13:57:06

对于您想要执行的操作,我建议使用 IValueConverter

但是,您需要确保反映数值的属性也是 Observable。 (即,您需要从其设置器中调用OnPropertyChanged)。

但是像这样的值转换器应该可以解决问题:

public class IntToColorValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is int)
        {
            int number = (int)value;
            if (number < 9)
                return Colors.Green;
            else if (number > 9)
                return Colors.Red;
        }

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

For what you are trying to do, I would recommend using a IValueConverter

However, you need to make sure that the property reflecting the number value, also is Observable. (ie. you need to call OnPropertyChanged from it's setter).

But a value converter like this, should do the trick:

public class IntToColorValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is int)
        {
            int number = (int)value;
            if (number < 9)
                return Colors.Green;
            else if (number > 9)
                return Colors.Red;
        }

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文