IsChecked在WPF中没有正确绑定

时间:2012-12-19 15:22:55

标签: c# wpf wpf-controls checkbox

我有一个绑定到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'?

1 个答案:

答案 0 :(得分:2)

IsChecked正在尝试进行TwoWay绑定......我不认为这对匿名类型是可行的。

尝试

IsChecked="{Binding IsLinked, Mode=OneWay}"