1

添付プロパティに関する私の理解から、型に一致するコンテナのすべての子に適用されるプロパティ値を設定できると信じています。たとえば、StackPanel に多数の TextBox がある場合、StackPanel の宣言で TextBox.IsEnabled プロパティを false に設定することで、それらをすべて無効にすることができます。

<StackPanel TextBox.IsEnabled="False" Orientation="Horizontal">
...
</StackPanel>

これを Visual Studio で試したところ、Xaml デザイナーは StackPanel の TextBoxes を期待どおりにグレー表示しましたが、コンパイルしようとすると、次のエラーが発生しました。

添付可能なプロパティ「IsEnabled」がタイプ「TextBox」に見つかりませんでした

添付プロパティを誤解していませんか? 彼らは祖先から子供に行くだけですか?もしそうなら、私がしようとしていること、つまり、すべての子TextBoxesIsEnabledプロパティを false に設定する方法はありますか?

ご指摘ありがとうございます

4

1 に答える 1

1

はい、添付プロパティを使用すると、親にプロパティ値を設定でき、子はその値を継承します。一方TextBox.IsEnabled、添付プロパティではないため、やりたいことができません。

おそらく、いくつかのカスタム パネルおよび/またはカスタムの添付プロパティ プログラミングを使用して、必要なものを取得することが可能です。

Styleただし、必要に応じて IsEnabled プロパティをカスタム ロジックにバインドできる場所を使用して、同じ結果を取得することもできます。

<StackPanel Width="200" Height="50" >
     <StackPanel.Resources>
         <Style TargetType="TextBox">
             <Setter Property="IsEnabled" Value="False" />
         </Style>
     </StackPanel.Resources>
        <TextBox Text="one" />
        <TextBox Text="two" />
</StackPanel>
于 2013-01-29T08:34:17.267 に答える