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 の ImageSource に PriorityBinding を追加しようとすると、次のエラーが発生します。

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

分かりましたら、コンバーターを使用する必要があると思います^^

<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 に答える