Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从模板更新复选框的绑定源?_C#_Xaml_Binding_Windows Phone 8 - Fatal编程技术网

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

C# 如何从模板更新复选框的绑定源?,c#,xaml,binding,windows-phone-8,C#,Xaml,Binding,Windows Phone 8,我有一个模板(TextBlock+CheckBox)用于LonglistSelector中的项目,但我无法确定如何刷新绑定。复选框绑定到布尔属性。到目前为止,唯一有效的方法是使用不同的参数导航到同一个XAML页面,但这个“解决方案”无法使用 我找到了一些示例,说明如何将UpdateSource()与TextBox一起使用,但没有一个示例使用模板中的CheckBox 这是我在teplate中的复选框。很多东西可能都没用,我找到的都试过了。绑定正在工作,但它不会刷新,因此我必须导航到另一个页面,例如

我有一个模板(
TextBlock
+
CheckBox
)用于
LonglistSelector
中的项目,但我无法确定如何刷新绑定。
复选框
绑定到布尔属性。到目前为止,唯一有效的方法是使用不同的参数导航到同一个XAML页面,但这个“解决方案”无法使用

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

这是我在teplate中的
复选框。很多东西可能都没用,我找到的都试过了。绑定正在工作,但它不会刷新,因此我必须导航到另一个页面,例如,然后刷新它

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

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


<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();
   }
}
私有列表chkList=新列表(); 已加载私有void(对象发送方、事件参数e) { 如果(!chkList.Contians(发送方为复选框)) { chkList.Add(发件人作为复选框); } } 私有void UpdateSource() { foreach(chkList中的chk复选框) { chk.GetBindingExpression(CheckBox.IsChekcedProperty).UpdateSource(); } }
谢谢,我希望我的问题最终能得到解决,但没有成功。它将所有复选框添加到列表中并进行检查,但看不到它们是否已更改。通过我的导航解决方案“刷新”仍然有效,所以代码中的其他地方应该不会出现问题。