Как объединить привязку из пользовательского контекста данных с пользовательской разметкой - PullRequest
0 голосов
/ 02 декабря 2010

Я хочу объединить привязку из моего пользовательского контекста данных, который содержит класс ViewModel и класс ResourceProvider. Пользовательский контекст данных устанавливается как окно DataContext.

Я использую это так:

<Button x:Name="btnShow" Content="Show" Command="{Binding View.HandleShow}"/>

Какой вид является свойством dataContext. Я хочу использовать локализацию с помощью пользовательского контекста данных с использованием минимальной разметки и установить ResourceProvider из другого источника в коде, в котором я создал свой собственный контекст данных

Есть ли возможность сделать это в чем-то похожем на эту строку кода:

 <TextBlock Text="{Binding Res.Key=test}" />

Мой поставщик ресурсов наследует от расширения разметки с одним свойством: ключ.

Спасибо за любой совет

Ответы [ 2 ]

1 голос
/ 02 декабря 2010

Вы можете создать собственное расширение разметки, используя следующий код:

public class LocalizedBinding : MarkupExtension
{
    public String Key { get; set; }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        IProvideValueTarget target = (IProvideValueTarget)serviceProvider.GetService(typeof(IProvideValueTarget));

        //use target.TargetObject and target.TargetProperty to provide value based on Key
    }
}

и используйте его как:

<TextBlock Text="{local:LocalizedBinding Key=SomeKey}" />
0 голосов
/ 02 декабря 2010

Я пробую это решение, но предпочитаю избегать префикса local, потому что localizedBinding пришел из другого источника и использую шаблон IoC, поэтому я создаю CustomDataContext

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...