Windows Phone listbox 图文混排
我自己定义了一个列表含图片的这种,但是有些记录没有图片,有些有
我想实现,没有图片时,文字自动占据左边原来图片占据的空间,
不知道如何实现
类似于以下这样的代码,有两个缺陷
1,文字不能自动占据无图的位置
2,textbox必须制定宽度,否则无法换行
<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>
{
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