Hali!
"{trl:Translate Text=Eladási Árak, Key=Title, Group=XX110}"
Ez nem binding hanem egy MarkupExtension
namespace HW.Controls.Translator
{
[DebuggerStepThrough]
[MarkupExtensionReturnType( typeof( string ) )]
public class TranslateExtension : MarkupExtension, INotifyPropertyChanged
{
private TranslatorExtender transl;
public TranslateExtension()
{
PropertyChanged+=new PropertyChangedEventHandler( TranslateExtension_PropertyChanged );
}
#region Translation parameters
private string text;
public string Text
{
get { return text; }
set
{
text = value;
notify( "Text" );
}
}
private string group;
public string Group
{
get { return group; }
set
{
group = value;
notify( "Group" );
}
}
private string key;
public string Key
{
get { return key; }
set
{
key = value;
notify( "Key" );
}
}
private TranslateType translateType = TranslateType.FrameworkElement;
public TranslateType TranslateType
{
get { return translateType; }
set
{
translateType = value;
notify( "TranslateType" );
}
}
#endregion
#region INotifyPropertyChanged Members && helper
public event PropertyChangedEventHandler PropertyChanged;
private void notify( string property )
{
if ( transl != null && !transl.Suppressed )
{
if ( PropertyChanged != null )
PropertyChanged( this, new PropertyChangedEventArgs( property ) );
}
}
private void TranslateExtension_PropertyChanged( object sender, PropertyChangedEventArgs e )
{
if ( transl != null && !transl.Suppressed )
{
switch ( e.PropertyName )
{
case "Group":
transl.Group = Group;
break;
case "Text":
transl.Text = Text;
break;
case "Key":
transl.Key = Key;
break;
case "TranslateType":
transl.TranslateType = TranslateType;
break;
}
}
}
#endregion
public override object ProvideValue( IServiceProvider serviceProvider )
{
object targetObject;
DependencyProperty targetProperty;
IProvideValueTarget targetHelper;
targetHelper = (IProvideValueTarget) serviceProvider.GetService( typeof( IProvideValueTarget ) );
targetObject = targetHelper.TargetObject;
targetProperty = targetHelper.TargetProperty as DependencyProperty;
if ( targetObject is FrameworkElement )
{
transl = TranslatorExtender.Get<TranslatorExtender>( targetObject as FrameworkElement );
transl.TargetProperty = targetProperty;
if ( !transl.Suppressed )
{
using ( transl.Suppress() )
{
transl.Text = Text;
transl.Group = Group;
transl.Key = Key;
transl.TranslateType = TranslateType;
}
}
return transl.GetTranslatedText();
}
return Text;
}
}