我在xaml中有一个绑定,如果在运行时满足某些条件,我想删除它。这是我的xaml的代码片段:
<ComboBox x:Name="cbRad" Width="175"
HorizontalAlignment="Left"
cl:FrameworkElementUtil.Required="True"
Height="18"
VerticalAlignment="Top"
TabIndex="20"
DisplayMemberPath="Isotopo" SelectedValue="{Binding Rad}" RenderTransformOrigin="0.247,7.773"
Grid.Row ="6"
Grid.Column="3">
<ComboBox.SelectedItem>
<Binding Path="Rad">
<Binding.ValidationRules>
<v:NotNullValidationRules />
</Binding.ValidationRules>
</Binding>
</ComboBox.SelectedItem>
</ComboBox>
我调查了BindingOperations.ClearBinding,但所有的例子都是Textboxes,我真的没有。到现在为止,我尝试了以下内容:
BindingOperations.ClearBinding(Me.cbRad,ComboBox.SelectedItem)
这给了我一个编译错误,导致ComboBox.SelectedItem不是一个合适的依赖属性。
BindingOperations.ClearBinding(Me.cbRad,Me.cbRad.SelectedItem)
这个编译但是它会产生运行时错误,因为Me.cbRad.Selecteditem为空。
¿如何删除绑定,就像从未使用代码声明一样?
答案 0 :(得分:2)
尝试
BindingOperations.ClearBinding(Me.cbRad, Selector.SelectedItemProperty)
我猜你的第一次尝试没有编译,因为SelectedItem是一个实例方法,需要一个实例才能使用它。
您的第二次尝试是在VB.NET中编译的,因为SelectedItem返回一个Object,而VB.NET(当不处于Strict模式时)会尝试自动将传递给参数的Object强制转换为参数类型,在本例中为{ {1}}。
如果DependencyPropery
不是Nothing(假设某个类的实例),那么在运行时也会失败,因为无法将该实例转换为DependencyProperty。
由于SelectedItem
为Nothing,因此在运行时仍然失败,因为如果不使用某些SelectedItem
,就无法调用ClearBinding
。
实际需要的是保存依赖项属性对象的静态字段 - Selector.SelectedItemProperty。