1

我搜索了文档,但显然没有适用于 Windows Phone 8 的 PriorityBinding。是否有类似的方法可以在 Windows Phone 8 中的 XAML 中实现相同的行为?

我为 ListItem 创建了一个样式:

<DataTemplate x:Key="ListItem">
    <Grid>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="50" />
        </Grid.ColumnDefinitions>

        <Image 
            Grid.Column="0"
            Source="{Binding Path=ImageSource}" />

        <TextBlock 
            Grid.Column="1" 
            TextWrapping="NoWrap"
            TextTrimming="WordEllipsis"
            Text="{Binding Path=Text}" />

        <Image 
            Grid.Column="2"
            Source="/images/arrow_right.png" />

    </Grid>
</DataTemplate>

现在我想添加一个 PriorityBinding,所以如果 ImageSource 或 Text 为空,我想添加占位符。

我为 WPF 找到了这个示例:

<Image.Source>
    <PriorityBinding FallbackValue="/images/default_category.png">
        <Binding Path="ImageSource"/>
    </PriorityBinding>
</Image.Source>

[...]

<TextBlock.Text>
    <PriorityBinding FallbackValue="Placeholder Text">
        <Binding Path="Text"/>
    </PriorityBinding>
</TextBlock.Text>

我尝试在 App.xaml 中将 PriorityBinding 添加到我的 ImageSource 并发生以下错误:

The type 'PriorityBinding' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built.

编辑

我想将 ImageSource 绑定到模型的 ImageSource 属性,如果没有数据,那么我想使用占位符作为图像,而不是模型的(空)ImageSource。

我的 TextBlock 也是如此,如果我的模型中的文本为空,我想显示一个占位符文本(例如“无数据”)。

4

1 回答 1

1

hoo ok 我想你需要使用转换器,如果我明白的话^^

<phone:PhoneApplicationPage.Resources>
    <Converter:TextConverter x:Key="TextConverter"></Converter:TextConverter>
</phone:PhoneApplicationPage.Resources>
 <TextBlock 
            Grid.Column="1" 
            TextWrapping="NoWrap"
            TextTrimming="WordEllipsis"
            Text="{Binding Path=Text,converter{StaticRessource TextConverter}" />

public class TextConverter: IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value != null)
            {
                return "No data";
            }
            return null;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
于 2013-09-20T19:33:31.273 回答