当前位置: 代码迷 >> Windows Mobile >> Windows Phone listbox 图文混排解决方案
  详细解决方案

Windows Phone listbox 图文混排解决方案

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

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

XML code
<StackPanel Orientation="Horizontal">              <Image Margin="8"                     VerticalAlignment="Top"                     Source="{Binding Path=ImageUri}"                     Width="100"                     Height="100" />              <StackPanel>                <TextBlock Margin="8"                           Width="300"                           TextWrapping="Wrap"                           VerticalAlignment="Top"                           HorizontalAlignment="Left"                           Text="{Binding Path=ProductName}" />                <TextBlock Width="100"                           Margin="8,0,8,8"                           VerticalAlignment="Top"                           HorizontalAlignment="Left"                           Text="{Binding Path=Price, Converter={StaticResource priceConvert}}" />              </StackPanel>


------解决方案--------------------
如果图片大小固定的话就把宽高设置成Auto.
------解决方案--------------------
priceConvert 判断,空的话用其他图片代替即可。
------解决方案--------------------
建议服务那边提供的正确些,客户端就方便了。
------解决方案--------------------
<StackPanel Orientation="Horizontal">
<Image Margin="8"
VerticalAlignment="Top"
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)
  相关解决方案