「 」というボタンのブール プロパティを作成しようとしていますIsVisibleWhenReadOnly
。これを StackPanel のボタンで使用して、データが状態にあるかどうかに応じて表示または非表示にできるようにしますReadOnly
。つまり、ReadOnly
状態の場合、[保存] ボタンと [キャンセル] ボタンは非表示ですが、[編集] ボタンは表示されます。[編集] ボタンをクリックすると、ReadOnly
状態が false になり、[キャンセル] ボタンと [保存] ボタンが表示され、[編集] ボタンが非表示になります。
私の物件コード:
public bool IsVisibleWhenReadOnly
{
get { return (bool)GetValue(IsVisibleWhenReadOnlyProperty); }
set { SetValue(IsVisibleWhenReadOnlyProperty, value); }
}
// Using a DependencyProperty as the backing store for IsVisibleWhenReadOnly.
public static readonly DependencyProperty IsVisibleWhenReadOnlyProperty =
DependencyProperty.Register("IsVisibleWhenReadOnly",
typeof(bool),
typeof(Button),
new PropertyMetadata(true));
ボタンのスタイル:
<Style TargetType="{x:Type Button}">
<Setter Property="Visibility">
<Setter.Value>
<Binding Path="IsVisibleWhenReadOnly" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Window}" Mode="OneWay">
<Binding.Converter>
<utils:BoolToVisibilityConverter/>
</Binding.Converter>
</Binding>
</Setter.Value>
</Setter>
</Style>
およびボタンコード:
<Button Name="btnEdit" Content="Edit" MinWidth="75" Height="25"
Click="btnEdit_Click" IsVisibleWhenReadOnly="true" />
IsReadOnly
うまく機能している別の依存関係プロパティであり、その値に基づいてコントロールを有効/無効にしますが、これは有効性ではなく可視性に影響を与えたいと考えています。
残念ながら、コンパイル時に 3 つのエラーが発生します。
The member "IsVisibleWhenReadOnly" is not recognized or is not accessible.
The property 'IsVisibleWhenReadOnly' does not exist in XML namespace 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'.
The property 'IsVisibleWhenReadOnly' was not found in type 'Button'.
行にあると思いますtypeOf(Button),
が、それを「BaseWindow」(typeOf()
「IsReadOnly」プロパティの値)に変更しても違いはありませんでした。また、私の BoolToVisibilityConverter が問題ではないと確信しています。
誰かが私が間違っていることを見て、正しい方向に向けることができますか?
編集:可能であれば、依存関係プロパティをボタンだけでなく使用したいと思います。たとえば、StackPanels、CheckBoxes など、ボタンだけに限定されないソリューションが理想的です。