0

ユーザーコントロール内にカスタムコンテンツ(赤い円)が定義されたボタンがあり、ボタンが無効になっている場合は円を灰色に変更したいと思います。

次のことを試しましたが、コンパイルされません

エラー:「IsEnabled」メンバーには修飾型名がないため、無効です。

私がここで間違っていることを説明できますか?

<Button>
    <Button.Content>
        <Grid>
             <Ellipse x:Name="circle" Width="20" Height="20" Fill="Red"/>
        </Grid>
     </Button.Content>
     <Button.Triggers>
         <Trigger Property="IsEnabled" Value="False">
        <Setter TargetName="circle" Property="Fill" Value="Gray"/>
          </Trigger>
      </Button.Triggers>
</Button>
4

2 に答える 2

3

IsEnabledButtonから継承するクラスで定義されているDependecyPropertyです。XAMLでは、所有するタイプを明示的に指定する必要があります。Trigger Property="UIElement.IsEnabled"代わりに試してください。

于 2012-07-31T14:06:08.850 に答える
1

これを行う方法は次のとおりです。

<Button Name="btn" >
    <Ellipse Height="20" Width="20">
        <Ellipse.Style>
            <Style TargetType="Ellipse">
                <Setter Property="Fill" Value="Red" />
                <!-- Here is the 'normal' content -->
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsEnabled, ElementName=btn}" Value="False">
                    <Setter Property="Fill" Value="Blue" />
                    <!-- Here is the 'override' content -->
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Ellipse.Style>
    </Ellipse>
</Button>

DataTriggersはスタイルでのみ機能するため、スタイルを受け取っていた実際の要素をターゲットにする必要がありましたが、コントロール内の別の要素にバインドしました。

于 2012-07-31T16:14:19.123 に答える