【问题标题】:empty listbox message wp7空列表框消息 wp7
【发布时间】:2012-08-04 12:20:07
【问题描述】:

我一直在研究,并且一直在尝试不同的方式在我的列表框为空时显示消息。

按照这篇文章做的 WPF Listbox - Empty List Display Message

没有运气在我的视图模型中添加了代码,我的文本块锁定如下:

<TextBlock Text="{Binding EmptyMessage}" Visibility="{Binding Converter={StaticResource VisibilityConverter}, Path=allToDoItemsListBox.Count}" FontSize="{StaticResource PhoneFontSizeExtraLarge}" IsHitTestVisible="False" />

还做了一个这样的转换器:

公共类 VisibilityConverter : IValueConverter {

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    if (value != null && (int)value > 0)
        return "Collapsed";
    else
        return "Visible";
}

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

}

我缺少什么,应该可以工作,但不能。已将 app.xanl 中的转换器添加为资源

【问题讨论】:

  • 如果 (int)value > 0,你的列表框不应该是可见的,而不是像你做的那样相反吗?
  • 没有。它的意思是如果 (int) 值大于 0,在这种情况下应该将可见性设置为 Collapsed。

标签: windows-phone-7 listbox message


【解决方案1】:

我认为返回的值不是“折叠”或“可见”。不应该是 System.Windows.Collapsed 和 System.Windows.Visible 吗?

【讨论】:

    【解决方案2】:

    用这个代码试试吧:

        public object Convert(object Value, Type TargetType, object Parameter, CultureInfo Culture)
        {
            if (value != null && (int)value > 0)
            {
                return Visibility.Collapsed;
            }
            return Visibility.Visible;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
             throw new NotImplementedException();
        }
    

    为此请检查您是否有以下使用声明

    using System.Windows;
    

    【讨论】:

    • 尝试调试并在两个返回行上设置断点。调试器会去那里吗?否则,将您的 Converter 声明为资源似乎有问题。
    • 对此进行了测试,调试器并没有去那里。我的 Converter 资源声明在我的 app.xaml 中,如下所示: 资源>
    • 将转换器的定义 (xmlns:converter="clr-namespace:mechanics") 向上移动,直接作为应用程序标签的属性。我认为你的不起作用,因为转换器的定义:低于它的实际使用。
    • 我移动了转换器的定义,这就成功了。非常感谢您的帮助。
    • 请将此设置为答案,这样可以帮助其他有同样问题的人。谢谢
    【解决方案3】:

    您需要将 textBlock Visibility 绑定到如下属性:

    public System.Windows.Visibilty EmptyMessageVisibility
    {
        get { return itemList.Count == 0 ? Visibility.Collapsed : Visibility.Visible; }
    }
    

    【讨论】:

    • 那么我使用转换器对文本块的可见性绑定没有用吗?我已经用您展示的示例进行了测试,但是当我将列表框设置为 itemList 所在的位置时,没有显示 Count 的属性。我是不是有点瞎了。
    • 对于 ListBox,它是 listBox.Items.Count
    • 我认为当我尝试使用 ObservableColletion 时,我是如此的聪明,就像在这篇文章中一样 social.msdn.microsoft.com/forums/en-us/wpdevelop/thread/… 没那么好用,当我添加他们从未显示的项目时。
    • 您不能正确设置 DataContext 或 Binding。如果您发布更多代码会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多