wpf datatrigger绑定到方法

时间:2012-12-19 15:22:31

标签: c# wpf bind datatrigger

我有一个返回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路径错误:'object'''XmlElement'

上找不到'check'属性

1 个答案:

答案 0 :(得分:3)

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>