绑定自动解除的情况

3
今天我遇到了一个问题,让我想起有些情况下绑定会自动分离。我不确定,但以下是情景 -
我附加了一个与属性绑定的菜单项(实现了INotifyPropertyChanged),如下所示 -
IsChecked="{Binding Path=DisplayLongUnit, Mode=TwoWay}"

现在,在它的“checked”事件处理程序中,我会在检查一些条件后更新它的IsChecked值,就像这样:

If( condition == true){menuItem.IsChecked = true}

现在绑定还会保留吗,还是会丢失?(我记得在某个地方看到过会丢失)。

是否存在自动分离绑定的情况?

我找到的一个情况在这里提到 -

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/08d6e4c4-47ab-44f3-b19a-c0ab872fb1a8

4个回答

8

关于如何知道绑定是否已分离:您可以调试绑定。首先,在XAML中添加诊断命名空间。以下是一个窗口的示例(为了清晰起见,我已删除了其他通常的命名空间):

<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase">  

然后您可以在绑定上启用跟踪。以下是一个示例,其中绑定设置在TextBox的Text属性上:

<TextBox Text={Binding FirstName, diagnostics:PresentationTraceSources.TraceLevel=High} />  

现在,如果你在运行程序时查看 Visual Studio 的输出选项卡,你会看到有关绑定的信息,包括“detach”当它被分离时。
所以这并没有告诉你为什么它被分离,只是告诉你何时被分离。虽然这也有帮助。

0
不要忘记将 "IsCheckable" 设置为 true。如果它是 false,双向绑定将无法工作。以下数据绑定的 MenuItem 对我有效(没有代码后台):
<MenuItem Header="Select sense" ItemsSource="{Binding Path=AvailableSenses}" >
    <MenuItem.ItemContainerStyle>
        <Style TargetType="MenuItem">
            <Setter Property="Header" Value="{Binding Path=Sense.English}" />
            <Setter Property="IsCheckable" Value="True" />
            <Setter Property="IsChecked" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
        </Style>
    </MenuItem.ItemContainerStyle>
</MenuItem>

0

你有试过双向绑定吗?

IsChecked="{Binding Path=DisplayLongUnit, Mode=TwoWay}"

0

谢谢您的回复,Carrotman。但是我在我的问题中提供的绑定示例没有遇到任何问题。问题是在某些情况下绑定会被重置或丢失。 - akjoshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接