wpf datatrigger绑定到方法

Posted

技术标签:

【中文标题】wpf datatrigger绑定到方法【英文标题】:wpf datatrigger bind to method 【发布时间】:2012-12-06 23:46:10 【问题描述】:

我有一个返回 true 或 false 的方法。

我希望将此方法绑定到我的 DataTrigger

       <DataGrid ItemsSource="Binding Source=StaticResource SmsData, XPath=conv/sms">
        <DataGrid.RowStyle>
            <Style TargetType="x:Type  DataGridRow">
                <Style.Triggers>
                    <DataTrigger Binding="Binding Path=check" Value="true">
                        <Setter Property="Foreground" Value="Black" />
                        <Setter Property="Background" Value="Blue" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.RowStyle>
    </DataGrid>

如果返回值为“true”,则执行setter...

我的代码:

public MainWindow()

    DataContext = this;
    InitializeComponent();



public string check

    get
    
       return "true";
    

我怎样才能让它工作?我现在收到一个错误(在运行时,没有使我的程序崩溃): BindingExpression 路径错误:在“对象”“XmlElement”上找不到“检查”属性

【问题讨论】:

【参考方案1】:

RowStyle 的 DataContext 是 DataGrid 的 ItemsSource 中的一项。在您的情况下,这是一个 XMLElement。要绑定到DataGrid的DataContext,必须通过ElementName引用DataGrid,Path就是元素的DataContext。像这样:

   <DataGrid Name="grid" ItemsSource="Binding ... 
    <DataGrid.RowStyle>
        <Style TargetType="x:Type DataGridRow">
            <Style.Triggers>
                <DataTrigger Binding="Binding ElementName=grid, Path=DataContext.check" Value="true">
                    <Setter Property="Foreground" Value="Black" />
                    <Setter Property="Background" Value="Blue" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
</DataGrid>

【讨论】:

以上是关于wpf datatrigger绑定到方法的主要内容,如果未能解决你的问题,请参考以下文章

WPF DataGrid - 如何设置正确的 DataTrigger 绑定到单元格的数据源(而不是行的源)

DataGrid RowStyle - DataTrigger 中的绑定值

使用 TemplateColumns 将 WPF DataGrid 绑定到 DataTable

Wpf 绑定 + 数据触发器

在 DataTable 更改 WPF 后更新绑定到 DataTable 的 DataGrid

如何防止 ComboBox 中的 NewItemPlaceholder 行绑定到与 WPF 中的 DataGrid 相同的 DataTable