2012-12-19 103 views
0

我有一個列表,我綁定到一個itemsControl。首先綁定的項目不是isChecked部分。IsChecked在WPF中沒有正確綁定

下面是代碼

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}" /> 

以上不工作...或者說功能,該應用程序凍結並破壞完全不相關的代碼。

但是如果我採取相同的「{結合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'?

+2

'或者說,應用程序凍結和休息上一個完全無關的code'沒有足夠的信息在這裏回答。這是編寫一個原型的地方,它只能做到,而且只能做到這一點。 – Will

回答

2

IsChecked正試圖做一個雙向綁定...我不認爲這是可能的匿名類型。

嘗試

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

Thx凱克,那工作 –