Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
В CalcBinding нельзя задать свой собственный конвертер. Я не придумал сценария, в котором требовалась бы такая возможность, поэтому если у вас есть предложения, буду рад их прочитать.Есть два поля ввода. В одном —
http://example.com, в другом — pic.jpg. Нужно собрать путь из двух частей и показать картинку. С помощью CalcBinding решаемо?Using these ideas, then a binding like:
Text TweetText, Converter=RemainingLength, ConverterParameter=140
might be rewritten:
Text RemainingLength(TweetText,140)
or perhaps even:
Text 140 - Length(TweetText)
<TextBlock mvx:Bi.nd="Text Customer.FirstName; Visible=ShowFirstName" />Первое, quick converter судя по всему не умеет вынимать из выражения path имена source property. Поэтому они используют простые стандартные шаблоны $p которые без труда можно найти. Из за этого вам приходится лепить эти конструкции с шаблонами а потом еще биндинги отдельно указывать, согласитесь выглядит не очень юзабельно. Я бы не хотел этим загромождать xaml, для меня, как автора либы, вопрос удобства использования стоял принципиальноМаленький ньюанс. Указание параметров через P0 выдерживает решарперовский Rename, а ваше решение — нет. Таким образом, XAML с использованием вашей либы становится неподдерживаемым средствами автоматического рефакторинга. Решение о том, что юзать в продакшн-проекте, думаю, очевидно.
<Window x:Class="WpfSandbox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:wpfSandbox="clr-namespace:WpfSandbox"
d:DataContext="{d:DesignInstance Type=wpfSandbox:Mdl, IsDesignTimeCreatable=True}"
mc:Ignorable="d">
Компиляция выражений — не самая шустрая процедура, вроде. Отражения медленнее, чем скомпилированное выражение, но из-за компиляции нужно немало вызовов, чтобы оно "окупилось".
Впрочем, без замеров не сказать, какие последствия будут на производительности.
WPF: Binding без тривиальных конвертеров