【问题标题】:wpf/silverlight binding helpwpf/silverlight 绑定帮助
【发布时间】:2011-10-13 13:30:16
【问题描述】:

假设我有一个名为 CarData 的复杂属性和一个简单的 bool AllowSubmit。 Xaml:

<Grid ..... DataContext={Binding CarData}>
...TextBoxes binded, working
....

last line in the grid:
<Button IsEnabled={Binding AllowSubmit}>
</Grid>

问题是 AllowSubmit 没有绑定。我认为这是因为网格的 DataContext 绑定到 CarData 属性,因为如果我将按钮放在网格之外,它将起作用。我还想如果我通过将 Buttons DataContext 设置为 AllowSubmit 来“覆盖”DataContext 会有所帮助,但它不会起作用。我知道这是一个相当新手的问题,但是正确的方法是什么?我很确定可以将 Button 绑定到与网格属性不同的属性。感谢您的帮助。

【问题讨论】:

    标签: wpf silverlight xaml binding datacontext


    【解决方案1】:

    DataContext 属性由其中的控件继承。因此,如果您在 Grid 上更改它,那么它也会在里面的所有控件上有效地更改它。

    听起来你应该这样做:

    <Grid>
        <TextBox Text="{Binding CarData.Make}" />>
        <Button IsEnabled="{Binding AllowSubmit}" />>
    <Grid>
    

    此处,TextBox 钻入 CarData,因此 Button 的 DataContext 不受影响。

    【讨论】:

    • 显式设置 DataContext 属性是一种不好的做法,除非您完全了解代码的作用。我同意 CodeNaked 解决方案。
    • 非常感谢您的帮助。
    猜你喜欢
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多