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
コンテキストでのみ呼び出されます。ItemSource
Binding
このメソッドを他の場所で使用するときはいつでも、値コンバーターは呼び出されません。
私が間違っているかもしれないことを誰かが知っていますか?