silverlight – 在DataForm中的ComboBox IsEnabled绑定无法正常工作

我在DataForm中有几个ComboBox,我试图让它在某些ComboBox被选中之前禁用某些ComboBox.为此,我在绑定到DataContext的类中创建了一个名为CanEditCombo的通知属性,并配置了我的ComboBoxes,如下所示:

<ComboBox ... IsEnabled="{Binding CanEditCombo, Mode=OneWay}" />

CanEditCombo最初是假的,但是当DataForm首次加载时我的ComboBox可以编辑.

如果我将相同的IsEnabled绑定语法应用于我的DataForm中的TextBox,它按预期工作:首先禁用但CanEditCombo一旦启用就启用.

这是一个XAML的示例:

<toolkit:DataForm CurrentItem="{Binding NewProject, Mode=TwoWay}" x:Name="dfNewProject" CommandButtonsVisibility="None">
    <toolkit:DataForm.EditTemplate>
        <DataTemplate>
            <StackPanel>
                ...

                <toolkit:DataField>
                    <ComboBox ItemsSource="{Binding ProjectOptions, Mode=OneWay}"
                                SelectedValue="{Binding Options, Mode=TwoWay}"
                                DisplayMemberPath="Value"
                                SelectedValuePath="Key"
                                IsEnabled="{Binding CanEditCombo, Mode=OneWay}" />
                </toolkit:DataField>

                ...
            </StackPanel>
        </DataTemplate>
    </toolkit:DataForm.EditTemplate>
</toolkit:DataForm>

更重要的是,即使我在ComboBox上方的标记中将ComboBox的IsEnabled属性硬编码为False仍然可以编辑.

当ComboBox在DataForm中时,如何通过绑定语法设置ComboBox的IsEnable属性?

最佳答案 不确定你是否已经找到了答案,但实际上有一个非常简单的解决方案:在DataField而不是ComboBox(或任何其他DataField嵌套控件)上设置IsEnabled.

<toolkit:DataField IsEnabled="{Binding CanEditCombo, Mode=OneWay}">
     <ComboBox ItemsSource="{Binding ProjectOptions, Mode=OneWay}"
               SelectedValue="{Binding Options, Mode=TwoWay}"
               DisplayMemberPath="Value"
               SelectedValuePath="Key" />
</toolkit:DataField>

我不确定DataField在内部做了什么,但是在嵌套控件上永远不会访问IsEnabled属性.

点赞