如何从模板更新复选框的绑定源?

时间:2013-08-16 08:15:38

标签: c# xaml binding windows-phone-8

我有TextBlock项目的模板(CheckBox + LonglistSelector),但我无法弄清楚如何刷新绑定。 CheckBox绑定到布尔属性。到目前为止唯一的方法是导航到具有不同参数的相同XAML页面,但是这个“解决方案”是不可用的。

我找到了一些示例,说明如何将UpdateSource()TextBox一起使用,但没有使用CheckBox来自模板。

这是来自teplate的CheckBox。许多事情可能都是无用的,我尝试了我发现的一切。绑定正在工作,但它没有刷新,所以我必须导航到另一个页面,然后刷新。

<CheckBox BorderThickness="2" 
                          VerticalAlignment="Center" 
                          x:Name="TemplateCheckBox" 
                          IsChecked="{Binding IsDone, UpdateSourceTrigger=Explicit, Mode=TwoWay}"
                          Checked="TemplateCheckBox_Checked"
                          Unchecked="TemplateCheckBox_Checked"
                          /> 

编辑:我找到了如何更新LonglistSelector中的项目的简便方法。只需创建另一个空的List,将其设置为ItemsSource,然后将原始列表设置为ItemsSource

1 个答案:

答案 0 :(得分:0)

<CheckBox BorderThickness="2" **Loaded="OnLoaded"**
                          VerticalAlignment="Center" 
                          x:Name="TemplateCheckBox" 
                          IsChecked="{Binding IsDone, UpdateSourceTrigger=Explicit, Mode=TwoWay}"
                          Checked="TemplateCheckBox_Checked"
                          Unchecked="TemplateCheckBox_Checked"
                          />

private List<CheckBox> chkList=new List<CheckBox>();

private void OnLoaded(object sender,EventArgs e)
{
   if(!chkList.Contians(sender as CheckBox))
   {
     chkList.Add(sender as CheckBox);
   }
}

private void UpdateSource()
{
   foreach(CheckBox chk in chkList)
   {
     chk.GetBindingExpression(CheckBox.IsChekcedProperty).UpdateSource();
   }
}