itemsControlにバインドするリストがあります。最初のアイテムは、isChecked部分ではなくうまくバインドされます。
これがコードです
var LstTemplates = Templates.Select(x=>new {TName=x.TemplateName,TId = x.Id, IsLinked = IsLinked(x.Id)});
itemsControlTemplates.ItemsSource = LstTemplates;
IsLinkedは、ブール値を返す関数です。
private bool IsLinked(int Id)
{
return (AnotherList.Any(x=>x.id==Id));
}
XAMLで
<CheckBox CommandParameter="{Binding TId}" Content="{Binding TName}" IsChecked="{Binding IsLinked}" />
上記は機能しません...というか、アプリがフリーズし、まったく関係のないコードで壊れます。
しかし、同じ「{Binding IsLinked}」をメッセージボックスまたはチェックボックスの内容に出力すると、次のように表示されます...
どこで私は間違えましたか?
更新:わかりました。コードが無関係のコードで壊れていると言った部分は無視してください。誤解を招く恐れがあります。
<ItemsControl Name="itemsControlTemplates" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="2">
<CheckBox CommandParameter="{Binding TId}" Content="{Binding TName}" IsChecked="{Binding IsLinked}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
コンテンツに「IsLinked」を出力すると表示されます。'IsChecked'にバインドするにはどうすればよいですか?