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();
}
}
谢谢,我希望我的问题最终能得到解决,但没有成功。它将所有复选框添加到列表中并进行检查,但看不到它们是否已更改。通过我的导航解决方案“刷新”仍然有效,所以代码中的其他地方应该不会出现问题。