Когда вы делаете {}
, компилятор не знает тип ожидаемого, так что это просто бессмысленное выражение, с которым компилятор не знает, что делать. Обе стороны :
оцениваются отдельно, и только тогда компилятор будет жаловаться, если типы не совпадают. Я бы просто сделал это:
return generator ? generator() : std::list<std::string>();
Конечно, следующее изменяет текстовую привязку shiftButtonText при изменении свойства IsPressed текущего DataContext. Это то, что вы ищете?
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsPressed}" Value="True">
<Setter TargetName="shiftButtonText" Property="Text" Value="{Binding Path=PressedText}"/>
</DataTrigger>
</DataTemplate.Triggers>
Надеюсь, это поможет,