我通過結合DataGrid
風格和MultiBinding
觸發器和轉換器解決了這個問題。
樣品XAML代碼:
<Window.Resources>
<this:RowConverter x:Key="RowConverter" />
</Window.Resources>
<Grid>
<DataGrid Name="dtGroups" HorizontalAlignment="Left" />
<DataGrid Name="dtJobs" HorizontalAlignment="Right">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource RowConverter}">
<Binding Path="SelectedItem.Id" ElementName="dtGroups" />
<Binding Path="GroupId" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Grid>
dtGroups
是由類型的對象填充一個DataGrid
:
public class JobGroup
{
public int Id { get; set; }
public string Name { get; set; }
}
dtJobs
是由類型的對象填充一個DataGrid
:
public class Job
{
public string Name { get; set; }
public int GroupId { get; set; }
}
下一頁,我檢查是否類別Job
中的類與dtGroups
中的所選作業組相同。這發生在轉換器:
class RowConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values.Length != 2 || values[0] == null || values[1] == null) return false;
if (values[0].ToString() == values[1].ToString()) return true;
return false;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
完美,我結束了使用MultiBinding並將兩個值傳遞給轉換器。感謝您的幫助。 –