在运行时更改DataTrigger绑定引用

时间:2011-05-04 15:09:53

标签: c# .net wpf xaml data-binding

我有一个附带此DataTrigger的ListView:

<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>

我在硬编码场景中使用它来隐藏/显示ListView中的一些ListItem。绑定源在ElementName标记中指定,并且引用的TextBox之前声明了几行。
现在,我有必要在运行时将Binding更改为在istantiated类中封装的另一个字段。我试过使用WPF类而不是XAML,但没有,我没有任何线索如何获得这个。

我愿意接受任何建议! :)

1 个答案:

答案 0 :(得分:2)

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];

随意更改绑定。