DataGrid
스타일과 MultiBinding
트리거 및 변환기를 결합하여이 문제를 해결했습니다.
샘플 XAML 코드 :
public class Job
{
public string Name { get; set; }
public int GroupId { get; set; }
}
다음 :
public class JobGroup
{
public int Id { get; set; }
public string Name { get; set; }
}
dtJobs
유형의 오브젝트가 가득 DataGrid
이다
<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
인 , 내가 확인하면 클래스의은 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을 사용하여 양쪽 값을 변환기로 전달합니다. 도와 주셔서 감사합니다. –