0

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'にバインドするにはどうすればよいですか?

4

1 に答える 1

2

IsCheckedはTwoWayバインディングを実行しようとしています...これは匿名タイプでは不可能だと思います。

試す

IsChecked="{Binding IsLinked, Mode=OneWay}"
于 2012-12-19T15:32:57.790 に答える