2012-12-19 122 views
4

我有一個返回true或false的方法。wpf datatrigger綁定到方法

我想這個方法被綁定到我的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> 

如果返回值是 「真」,然後做二傳手...

我的代碼:

public MainWindow() 
{ 
    DataContext = this; 
    InitializeComponent(); 
} 


public string check 
{ 
    get 
    { 
     return "true"; 
    } 
} 

我怎樣才能得到這個工作?我現在得到一個錯誤(在運行時,不會崩潰我的程序): BindingExpression路徑錯誤:「檢查」財產「對象」「」的XmlElement」上沒有找到

回答

3

的RowStyle的DataContext的是在的的ItemsSource的項目DataGrid。就你而言,這是一個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>