wpf绑定到另一个控件属性

时间:2012-11-06 18:01:17

标签: c# wpf binding

所以我有这个用户控件:

<UserControl x:Class="Client.SpectrumSpace"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:my="clr-namespace:Client" 
             mc:Ignorable="d" d:DesignHeight="150" d:DesignWidth="350">
    <Canvas>
        <Rectangle Width="350" Height="150" Fill="Transparent" Stroke="White" StrokeThickness="1">
            <Rectangle.ContextMenu>
                <ContextMenu Name="contextMenu">
                    <MenuItem Name="ctxItem1" Header="AntennaName" 
                              IsEnabled="{Binding MainWindow.availeableAntennas[0]}"/>
                </ContextMenu>
            </Rectangle.ContextMenu>
        </Rectangle>
    </Canvas>
</UserControl>

正如您所见,我试图将MainWindow.availableAntennas [0]属性绑定到MenuItem.IsEnabled属性

这是我在MainWindow类上声明数组的方式:

public  bool[]      availableAntennas   = new bool[9];

我的问题是IsEnabled属性始终为true,是的,我再次检查availeableAntennas [0]是否为false,那么我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您应该使用绑定表达式的"RelativeSource"

干杯

答案 1 :(得分:1)

对我来说,看起来它可能是一些或所有这些:

  • 您无法绑定到必须属性的字段 - public bool [] availableAntennas = new bool [9]
  • 错字 - availeableAntennas vs. availableAntennas
  • 必须设置datacontext(从发布中看不出来),
  • 您必须实施的课程必须实施INotifyPropertyChanged。