-1

だから私はこのユーザーコントロールを持っています:

<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 であることを再確認したため、ここで何が間違っているのでしょうか?

4

2 に答える 2

2

"RelativeSource"バインディング式を使用する必要があります。

乾杯

于 2012-11-06T18:03:54.490 に答える
1

私には、それはいくつかのこと、またはそれらのすべてである可能性があるように見えます:

  • プロパティである必要があるフィールドにバインドすることはできません-publicbool[] availableAntennas = new bool [9]
  • タイプミス-availeableAntennasとavailableAntennas
  • データコンテキストを設定する必要があります(投稿からはわかりません)、
  • バインドされているクラスは、INotifyPropertyChangedを実装する必要があります。
于 2012-11-06T18:23:28.747 に答える