Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据绑定中的表达式。。。可能的如何?_C#_Silverlight_Data Binding_Windows Phone 7 - Fatal编程技术网

C# 数据绑定中的表达式。。。可能的如何?

C# 数据绑定中的表达式。。。可能的如何?,c#,silverlight,data-binding,windows-phone-7,C#,Silverlight,Data Binding,Windows Phone 7,我有一个集合数据绑定到列表框。我想做的是根据集合成员的某些属性是否存在来显示一些UI 例如: 然后: ... Visibility="{Binding has_foo}" ... 但要生成这些附加属性似乎有些尴尬 我想有更好的办法。有?你会怎么做 谢谢。创建一个值转换器。差不多 public class NullToVisibilityConverter : IValueConverter { public object Convert(object value, Type targe

我有一个集合数据绑定到
列表框
。我想做的是根据集合成员的某些属性是否存在来显示一些UI

例如:

然后:

... Visibility="{Binding has_foo}" ...
但要生成这些附加属性似乎有些尴尬

我想有更好的办法。有?你会怎么做


谢谢。

创建一个值转换器。差不多

public class NullToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value != null ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
<YourUserControl.Resources>
   <NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
</YourUserControl.Resources>

<ListBox ItemsSource="{Binding Stuff}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding foo}" 
                 Visiblity="{Binding foo, 
                     Converter={StaticResource NullToVisibilityConverter}"/>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>
然后添加如下内容

public class NullToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value != null ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
<YourUserControl.Resources>
   <NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
</YourUserControl.Resources>

<ListBox ItemsSource="{Binding Stuff}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding foo}" 
                 Visiblity="{Binding foo, 
                     Converter={StaticResource NullToVisibilityConverter}"/>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>


显然,我还没有实现ConvertBack(不确定您是否能够转换回来),但在这个例子中您不应该需要它。

太棒了!我知道有这样的快乐,我只是不知道该找什么。谢谢我将尝试一下。IValueConverter在WP7操作系统中存在一些严重的性能问题。参考:PDC 2010 Windows phone 7会话
<YourUserControl.Resources>
   <NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
</YourUserControl.Resources>

<ListBox ItemsSource="{Binding Stuff}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding foo}" 
                 Visiblity="{Binding foo, 
                     Converter={StaticResource NullToVisibilityConverter}"/>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>