Установите динамический ValueConverter-Parameter для ValueConverter, примененного стилем - PullRequest
0 голосов
/ 15 мая 2019

У меня есть пользовательский интерфейс с несколькими кнопками, которые меняются при клике.Чтобы не приходилось менять каждую кнопку с помощью собственной логики, я применил несколько IValueConverters и дал им имя кнопки в виде строки.

<ResourceDictionary>
    <converters:ButtonVisibilityConverter x:Key="ButtonVisibilityConverter" />
    ...
</ResourceDictionary>
...

<Button x:Name="MyData" ... 
  FontSize="{Binding ActiveButton, Converter={StaticResource ButtonVisibilityConverter}, ConverterParameter=MyData}" />

ActiveButton - это строка, в которой хранится имя текущей в данный момент кнопки.Каждая кнопка получила такое уникальное имя (в данном случае MyData).

Преобразователь сравнивает значения ActiveButton и MyData и возвращает соответствующие значения.

Что теперьЯ хочу, чтобы я мог использовать стили для кнопок, поэтому мне не нужно писать каждый конвертер значений для каждой кнопки, потому что они различаются только по идентификатору (например, MyData, Settings).

Я попробовал следующий подход:

<Style x:Key="ConvertersStyle" TargetType="Button">
    <Setter Property="IsVisible" 
        Value="{Binding ActiveButton, Converter={StaticResource ButtonFontSizeConverter}, ConverterParameter=???}"/>
                ...
</Style>

...

<Button ... Style="{StaticResource ConvertersStyle}" />

Но я не нашел возможности заставить ConverterParameter динамически получать кнопки x:Name или другой идентификатор.

Есть ли способ получитьназвание кнопки или, например, дать стилю параметр?

...