10分 |
一般是弄两个grid,一个放背景,一个放list,根据list的count属性,绑定到是否显示
|
10分 |
|
道理我明白,其实都不用两个Grid,直接同一个Grid,将里面一个ListBox和一个Image,Image铺满屏幕,然后Image的层级比ListBox上面,Image会显示在Listbox上面。然后Image的Visibility属性绑定list.count(list是listBox绑定的数据集合)如何实现? 有道理,关键问题在于如何将一个集合的count属性,绑定到Image的Visibility属性上。实现:当list的count为0,显示Image,否则不显示。 |
|
问题:如何将Image的Visibility属性 ,绑定到ListBox的Count属性上,count为0,显示Image,count不为0,不显示
|
|
15分 |
写个Converter转换类,绑定到Visibility属性上,而Count值最为 参数传进去。 程序中判断 count 并返回Visible或者Hiden;
|
15分 |
一种是自定义一个值转换器(Converter),然后在绑定中使用这个值转换器。 |
Converter,不太熟,基本不会
<Grid> 请问这个怎么弄? 我原本想用触发器来做的,isListCountZero = list.count |
|
10分 |
WPF中有个叫做数据转换的接口IValueConverter,你可以通过实现该接口,然后应用到绑定的属性上,这样就可以实现不同类型属性间的转换了
|
20分 |
还是上代码吧。。。
怎么定义自己的Converter?定义一个类,然后实现IValueConverter接口中的两个方法就行啦。 public class CountToVisibilityConverter : IValueConverter { //从源到目标的转换 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { //value对应源的值,在你的问题里就是代表count var cnt = value as Int32; //返回值对应目标的值,在你的问题里就代表Visibility if (cnt > 0) { return Visibility.Visible; } else { return Visibility.Hidden; } } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } 怎么在绑定里使用它?通常,首先要创建一个CountToVisibilityConverter资源,比如 <Window.Resources> <Converter:CountToVisibilityConverter x:Key="VisibilityConverter"/> </Window.Resources> 然后在绑定的时候用这个资源设置Binding的Converter属性,比如: <Image Visibility="{Binding ElementName=listbox, Path=Items.Count, Converter={StaticResource VisibilityConverter}}"/> |
给楼上的一点补充,以便后续的兄弟能更快的应用:
引用: xmlns:Converter=”clr-namespace:CountToVisibilityConverter ” |