バウンド文字列(C#の)上で使用する場合の簡単なコンバータは動作させることはできません:は、私は以下のコンバータが定義されている
class BodyValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string s = value.ToString();
int prefixLength;
if (!int.TryParse(parameter.ToString(), out prefixLength))
return s;
return s.Substring(0, prefixLength);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
これは、渡された文字列の先頭から開始しますと量を返します。私がパラメータとして指定する文字の数。私は、コンバータインスタンス化している私のXAMLで
:<DataTemplate x:Key="AppointmentTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Subject}"></TextBlock>
<TextBlock Text="{Binding Path=Subject, Converter={StaticResource BodyValueConverter}, ConverterParameter=1}"></TextBlock>
</StackPanel>
</DataTemplate>
エラーは次のとおりです:
TextBlock内のこのコンバータを使用しようとしてXAMLParseException: Provide value on 'System.Windows.Markup.StaticResourceHolder' threw an exception.
<local:BodyValueConverter x:Key="BodyValueConverter"/>
私はエラーを取得します
最初のテキストブロックは、件名を表示するのに問題ありません。 2行目は私に例外を与えるものです。
XAMLでのオブジェクトの順序は何ですか?コンバーターは実際に使用する前に定義する必要がありますので、コンバーターが 'Resources'の' DataTemplate'の上にあるか、 'StaticResource'の代わりに' DynamicResource'を使うようにしてください – Rachel
パーフェクトレイチェル!!それをソートしました!リソースの順序が正直であるとは思わなかった、私はそれを学んだことがうれしい。どうもありがとう。私は受け入れることができるように答えとして投稿するかもしれない? – SkonJeet
答えとして投稿しました:) – Rachel