ListView/GridView に埋め込まれたチェックボックスの状態を変更する方法を見つけようとしています。問題は、チェックボックスが別の DataGrid 内の一部のレコードの承認ステータスに依存していることです。(例: チェックボックスを承認ステータスとして使用しています。True = すべて承認済み、False = なし、null = 一部承認済み)。
DataContext はエンティティであるため、処理に使用できる bool 値がありません。
<ListView x:Name="EmployeeNameListBox" Height="330" ItemsSource="{Binding}" SelectedValuePath="ID" SelectionChanged="EmployeeNameListBoxSelectionChanged">
<ListView.View>
<GridView AllowsColumnReorder="False" >
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsThreeState="True" Checked="EmployeeCheckBoxChecked" Unchecked="EmployeeCheckBoxChecked" x:Name="CheckBoxHero"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {1} - {2}">
<Binding Path="LastName" />
<Binding Path="FirstName" />
<Binding Path="EmployeeNumber" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
承認ステータスを更新しようとしている場所は次のとおりです。
foreach (var employee in this.employees)
{
var records = from a in this.dailyActivities where a.Employee == employee select a;
var approvedRecords = from r in records where r.IsApproved == true select r;
if (approvedRecords.Count() == 0)
{
// None Approved checkbox state = false
}
else if (approvedRecords.Count() == records.Count())
{
// All Approved checkbox state = true
}
else
{
// Some Approved Set Checkbox state to null
}
}