Я столкнулся с ситуацией, когда я легко могу достичь такой же функциональности, используя MultiDataTrigger
или, альтернативно, используя DataTrigger
с MultiBinding
. Существуют ли какие-либо существенные причины, чтобы предпочесть один подход по сравнению с другим?MultiDataTrigger vs DataTrigger with multibinding
С MultiDataTrigger:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=SomePath}" Value="SomeValue"/>
<Condition Binding="{Binding Path=SomeOtherPath, Converter={StaticResource SomeConverter}}" Value="SomeOtherValue"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource MyStoryboard}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
С MultiBinding:
<DataTrigger Value="foo">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource fooConv}"/>
<Binding Path=SomePath/>
<Binding Path=SomeOtherPath/>
</MultiBinding>
</DataTrigger.Binding>
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource MyStoryboard}"/>
</DataTrigger.EnterActions>
</DataTrigger>
Использование MultiDataTrigger обычно сэкономит вам многозначный преобразователь. См. [Этот вопрос] (http://stackoverflow.com/q/20990881/1136211), размещенный сегодня. – Clemens
Если один подход требует значительно больших усилий, чем другой, который повлияет на мои расчеты. В этом случае любой подход предполагает использование конвертера - на самом деле у меня есть подходящие конвертеры, и их не нужно писать, но если бы я этого не сделал, все равно не было бы (в этом случае) сделать один подход более привлекательным чем другой. – mcwyrm
В обоих примерах вам нужен конвертер, поэтому, если вы уже не реализовали их, я бы пошел с решением 'MultiDataTrigger', поскольку' SomeConverter' с большей вероятностью будет использоваться где-то еще, а 'fooConv', скорее всего, не собирается использоваться в других местах. –