1

Web サービスから取得したテキストのコレクションを使用しています。これは、さまざまなコントロールに使用する必要があります。

私の意見では、これを行う最も簡単で動的な方法は、次のように を使用しIValueConverterて指定されたテキストを取得することです。

public class StaticTextConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (parameter != null && parameter is string)
        {
            return App.StaticTexts.Items.SingleOrDefault(t => t.Name.Equals(parameter)).Content;
        }

        return null;
    }
}

次に、XAML でテキストの ID ('Name') をコンバーターに渡します。

<phone:PhoneApplicationPage.Resources>
    <Helpers:StaticTextConverter x:Name="TextConverter" />
</phone:PhoneApplicationPage.Resources>

<TextBlock Text="{Binding Converter={StaticResource TextConverter}, ConverterParameter=M62}" />

次に、一部のコントロールのテキストを変更するには、パラメータの ID を変更するか、Web インターフェイスからテキスト自体を変更するだけです。

私の問題は

値コンバーターは、プロパティがそこでのみ機能するかのように、が設定されているある種のDataTemplateコンテキストでのみ呼び出されます。ItemSourceBinding

このメソッドを他の場所で使用するときはいつでも、値コンバーターは呼び出されません。

私が間違っているかもしれないことを誰かが知っていますか?

4

2 に答える 2

1

DataContext="object"convertet が機能しておらず、値コンバーターが呼び出されるテキストブロックに設定します。

この回避策は、シナリオでうまくいきます。

于 2012-08-07T13:46:02.527 に答える