【问题标题】:Change DataTrigger binding reference at runtime在运行时更改 DataTrigger 绑定引用
【发布时间】:2011-05-04 15:09:53
【问题描述】:

我有一个附有此 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 在几行之前声明。
现在,我有必要在运行时使用封装在实例化类中的另一个字段来更改该绑定。我尝试使用 WPF 类而不是 XAML,但没有,我不知道如何获得它。

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

【问题讨论】:

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


    【解决方案1】:
    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];
    

    随意更改绑定。

    【讨论】:

      猜你喜欢
      • 2013-09-05
      • 2017-09-23
      • 2014-07-26
      • 2012-01-31
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      相关资源
      最近更新 更多