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; }
}
次に、GroupId
in Job
class が で選択したジョブ グループと同じかどうかを確認し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();
}
}