Изменить ссылку привязки DataTrigger во время выполнения - PullRequest
2 голосов
/ 04 мая 2011

У меня есть ListView с этим приложенным DataTrigger:

<Style x:Key="HideShowStyle" TargetType="{x:Type ListViewItem}">
        <Style.Resources>
            <localConverters:ShowHideConverter x:Key="ShowHideConverter" />
        </Style.Resources>

        <Style.Triggers>
            <DataTrigger Value="true">
                <DataTrigger.Binding>
                    <MultiBinding Converter="{StaticResource showHideConverter}">
                        <Binding Path="EndingDate" />
                        <Binding Path="UserName" />
                        <Binding ElementName="SearchBox" Path="Text" />
                    </MultiBinding>
                </DataTrigger.Binding>
                <Setter Property="Visibility" Value="Visible" />
            </DataTrigger>

            <DataTrigger Value="false">
               (...)
            </DataTrigger>
        </Style.Triggers>
</Style>

Я использую это в жестко заданном сценарии, чтобы скрыть / показать некоторые элементы ListItems в ListView. Источник привязки указывается в теге ElementName, а ссылка на TextBox объявляется несколькими строками ранее.
Теперь у меня есть необходимость изменить эту привязку во время выполнения с другим полем, инкапсулированным в класс istantiated. Я пытался использовать класс WPF вместо XAML, но ничего, я понятия не имею, как этого добиться.

Я открыт для любых советов! :)

1 Ответ

2 голосов
/ 04 мая 2011
var style = (Style)FindResource("HideShowStyle");
var trigger = (DataTrigger)style.Triggers[0];
var multibinding = (MultiBinding)trigger.Binding;

var binding1 = (Binding)multibinding.Bindings[0];
var binding2 = (Binding)multibinding.Bindings[1];
var binding3 = (Binding)multibinding.Bindings[2];

Изменить привязки по желанию.

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