首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

Windows Phone listbox 图文混排,该如何解决

2013-01-07 
Windows Phone listbox 图文混排我自己定义了一个列表含图片的这种,但是有些记录没有图片,有些有我想实现,

Windows Phone listbox 图文混排
我自己定义了一个列表含图片的这种,但是有些记录没有图片,有些有
我想实现,没有图片时,文字自动占据左边原来图片占据的空间,
不知道如何实现
类似于以下这样的代码,有两个缺陷

1,文字不能自动占据无图的位置
2,textbox必须制定宽度,否则无法换行


                     Source="{Binding Path=ImageUri}"
                     MaxWidth="100"
                     MaxHeight="100" />
              <StackPanel VerticalAlignment="Top">
            
              <TextBlock Margin="0,8,0,0"
              TextWrapping="Wrap"
              HorizontalAlignment="Left"
              Text="Binding Path=ProductName}" d:LayoutOverrides="Height" />
              <TextBlock
              Margin="0,0,0,8"
              HorizontalAlignment="Left"
              Text="Binding Path=Price, Converter={StaticResource priceConvert}}" d:LayoutOverrides="Height, VerticalMargin" />
              </StackPanel>
              </StackPanel>
[解决办法]
加一个converter 用来显示/隐藏这个图片控件不就可以了吗?
[解决办法]
  实现一个Converter,数据为空时,隐藏Image控件,Textblock就自动填充Image的位置。

后台代码:
using System;
using System.Windows;
using System.Windows.Data;

namespace DracoCMS.Client.Common.Utility
{
    public class StringToVisibilityConverter : IValueConverter
    {
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value is string && string.IsNullOrEmpty(value.ToString()))
            {
                return Visibility.Collapsed;
            }
            return Visibility.Visible;

        }

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



        #endregion

    }
}

前端代码:
  <UserControl.Resources>
        <utility:StringToVisibilityConverter x:Key="StringToVisiblityConv" />

 </UserControl.Resources>
。。。。。。。。。。。。。。。。。。。。。。。。。

 <TextBlock Style="{StaticResource RightBarDesTextBlockStyle}" Visibility="{Binding Path=SelectedModel.LevelDes, Converter={StaticResource StringToVisiblityConv}}" FontWeight="Heavy" Text="{Binding Path=SelectedModel.LevelDes}" />



  如果是数据动态绑定,还是用ListBox来处理比较好,重写ControlTemplate,定义ItemContainerStyle,或者加载DataTemplate。
[解决办法]
转换器太复杂了吧?而且不知晓率几何!
还不如写个触发器,当Image绑定的对象为NULL时,其Width=0


引用:
  实现一个Converter,数据为空时,隐藏Image控件,Textblock就自动填充Image的位置。

后台代码:
using System;
using System.Windows;
using System.Windows.Data;

namespace DracoCMS.Client.Common.Utility
{
    public class Str……

热点排行