私はSilverlight xamlのいくつかのコントロールにバインドされたDynamicObjectクラスを持っています。SilverlightコントロールをDynamicObject.Propertiesにバインドできますか?
class Localizer
{
public Strings Strings { get; set; }
}
public class Strings : DynamicObject
{
Dictionary<string, string> values;
public Strings(Dictionary<string, string> values)
{
this.values = values;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
string value;
bool success = values.TryGetValue(binder.Name, out value);
result = value;
return success;
}
}
と、次のようにこれにいくつかのコントロールをバインド:
System.Windows.Dataエラー:BindingExpressionパスエラー私はVS出力にこのエラーを取得するアプリケーションを実行すると
<TextBlock Text="{Binding Strings.User, Source={StaticResource Localizer}}"/>
: 'ログイン'プロパティが '.... Localization.StringsResource' '.... Localization.StringsResource'(HashCode = 10857028)に見つかりません。 BindingExpression:Path = 'Strings.Login' DataItem = '.... Localization.Localizer'(HashCode = 30604389);ターゲット要素は 'System.Windows.Controls.Button'(Name = 'btnLogin')です。 targetプロパティは 'Content'(型 'System.Object')です。
が、このようなコードでプロパティを読むとき:
string UserName = localizer.Strings.Login;
それは正常に動作し、それはXAMLでDynamicObjectにコントロールをバインドすることは可能でしょうか?