让我们说一个视图包含一个客户列表。默认情况下,此视图会有很多屏幕空间,并填充客户的详细信息。列表中的每个项目都可以用较大的字体显示客户的名称,第二行的地址用较小的字体显示。也许一些统计数据,如以前的订单总数等。
现在,如果用户缩小窗口,它需要足够的空间来容纳所有细节。处理这个问题的正确方法是什么?是否有某种方法来绑定每个项目使用的数据模板?
现在,如果用户使窗口更小 - 是否可以一起删除列表?用显示客户数量的标签替换它?
有关如何解决此问题的任何建议? 你知道任何类似的恶魔吗?
答案 0 :(得分:3)
我会通过转换器将控件的Visibility属性绑定到窗口的宽度(或高度,具体取决于您的布局)来实现此目的。考虑这样的事情:
public class HideIfSmallConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var c = value as IComparable;
if (c == null) return Visibilty.Visible;
return c.CompareTo(parameter) < 0 ? Visibility.Collapsed : Visibility.Visible;
}
}
现在我们有一个比较器,如果值小于给定参数,我们将折叠元素。我们可以这样使用它:
<ListBox Visibility="{Binding ActualWidth,RelativeSource={RelativeSource FindAncestor,AncestorType=Window},Converter={StaticResource hideIfSmall},ConverterParameter=400}" />
因此,如果窗口宽度低于400,则ListBox会崩溃。
这些都没有经过测试,但希望能给你一些想法。