WPFのアタッチドプロパティのデータバインディング
2023-11-08 06:37:03
質問
アタッチドプロパティでバインディングを使おうとしています。しかし、それを動作させることができません。
public class Attached
{
public static DependencyProperty TestProperty =
DependencyProperty.RegisterAttached("TestProperty", typeof(bool), typeof(Attached),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault | FrameworkPropertyMetadataOptions.Inherits));
public static bool GetTest(DependencyObject obj)
{
return (bool)obj.GetValue(TestProperty);
}
public static void SetTest(DependencyObject obj, bool value)
{
obj.SetValue(TestProperty, value);
}
}
XAMLコードです。
<Window ...>
<StackPanel local:Attached.Test="true" x:Name="f">
<CheckBox local:Attached.Test="true" IsChecked="{Binding (local:Attached.Test), Mode=TwoWay, RelativeSource={RelativeSource Self}}" />
<CheckBox local:Attached.Test="true" IsChecked="{Binding (local:Attached.Test), Mode=TwoWay}" />
</StackPanel>
</Window>
そして、バインディングエラー。
System.Windows.Data Error: 40 : BindingExpression path error: '(local:Attached.Test)' property not found on 'object' ''StackPanel' (Name='f')'. BindingExpression:Path=(local:Attached.Test); DataItem='StackPanel' (Name='f'); target element is 'CheckBox' (Name=''); target property is 'IsChecked' (type 'Nullable`1')
どのように解決するのですか?
信じられないかもしれませんが
Path=
を追加し、アタッチされたプロパティにバインドするときに括弧を使用します。
IsChecked="{Binding Path=(local:Attached.Test), Mode=TwoWay, RelativeSource={RelativeSource Self}}"
さらに、あなたの呼び出した
RegisterAttached
の呼び出しは、プロパティ名として "Test" を渡す必要があり、"TestProperty" を渡すべきではありません。
関連
-
[解決済み] SelectedItem、SelectedValue、SelectedValuePathの違いについて
-
[解決済み】無料のWPFテーマがあれば教えてください。[クローズド]
-
[解決済み] WPFでデータトリガーに複数の条件を指定するには?
-
[解決済み] スタックパネルでアイテムを整列させる?
-
[解決済み] WPFのデータグリッドでセルの編集を無効にするには?
-
[解決済み] JavaFXはWPFと比較してどうですか?[クローズド]
-
[解決済み] WPF 自分自身へのバインド
-
[解決済み] ObservableCollectionのクリア時にe.OldItemsに項目がない場合
-
[解決済み] wpfのリンクボタン
-
[解決済み] WPF DataGridのComboBoxColumnのItemsSourceのバインディング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] StackPanelの子要素をスペースアウトさせるには?
-
[解決済み】無料のWPFテーマがあれば教えてください。[クローズド]
-
[解決済み] WPFバインディングを使用して2つのコマンドパラメータを渡す
-
[解決済み] WPF: グリッドに列/行のマージン/パディングを設定できますか?
-
[解決済み] レンダリング時間やパフォーマンスの面で最も効率的なパネルはどのような順番になりますか?
-
[解決済み] XAMLにunicode文字を入れるには?
-
[解決済み] TwoWayまたはOneWayToSourceバインディングは、読み取り専用プロパティでは機能しません。
-
[解決済み] マルチバインディングで1バインディングの定数値を渡すには?
-
[解決済み] 右クリックでContextMenuを表示する前にTreeView Nodeを選択する
-
[解決済み] WPF : ダイアログをアプリケーションの中心に表示させるには?