[解決済み] WPFチェックボックスバインディング
2023-05-11 01:34:34
質問
チェックボックスのチェック状態をチェックボックスのクリックイベントを使用して変数に格納するのは簡単ですが、データバインディングでそれを行うにはどうしたらよいでしょうか。 私が見つけたすべての例では、UI が何らかのデータ ソースから更新されるか、1 つのコントロールを別のコントロールにバインドしていました。
ポインターのために TIA...
どのように解決するのですか?
このためには、依存関係のプロパティが必要です。
public BindingList<User> Users
{
get { return (BindingList<User>)GetValue(UsersProperty); }
set { SetValue(UsersProperty, value); }
}
public static readonly DependencyProperty UsersProperty =
DependencyProperty.Register("Users", typeof(BindingList<User>),
typeof(OptionsDialog));
これができたら、チェックボックスをdependencyプロパティにバインドします。
<CheckBox x:Name="myCheckBox"
IsChecked="{Binding ElementName=window1, Path=CheckBoxIsChecked}" />
この機能を使用するには、Window または UserControl の開始タグに名前を付け、ElementName パラメータにその名前を使用する必要があります。
このコードでは、コード側でプロパティを変更するたびに、テキストボックスが変更されます。また、テキストボックスのチェックを外すと、Dependency Propertyも変化します。
EDITです。
依存性プロパティを作成する簡単な方法は、propdpというスニペットを入力することで、依存性プロパティの一般的なコードを得ることができます。
すべてのコードです。
XAMLです。
<Window x:Class="StackOverflowTests.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" x:Name="window1" Height="300" Width="300">
<Grid>
<StackPanel Orientation="Vertical">
<CheckBox Margin="10"
x:Name="myCheckBox"
IsChecked="{Binding ElementName=window1, Path=IsCheckBoxChecked}">
Bound CheckBox
</CheckBox>
<Label Content="{Binding ElementName=window1, Path=IsCheckBoxChecked}"
ContentStringFormat="Is checkbox checked? {0}" />
</StackPanel>
</Grid>
</Window>
C#:
using System.Windows;
namespace StackOverflowTests
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public bool IsCheckBoxChecked
{
get { return (bool)GetValue(IsCheckBoxCheckedProperty); }
set { SetValue(IsCheckBoxCheckedProperty, value); }
}
// Using a DependencyProperty as the backing store for
//IsCheckBoxChecked. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsCheckBoxCheckedProperty =
DependencyProperty.Register("IsCheckBoxChecked", typeof(bool),
typeof(Window1), new UIPropertyMetadata(false));
public Window1()
{
InitializeComponent();
}
}
}
後ろにある唯一のコードが依存性プロパティであることに注目してください。ラベルとチェックボックスの両方がこのプロパティにバインドされています。チェックボックスが変更されると、ラベルも変更されます。
関連
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] クリック可能なラベルを持つチェックボックスを作成するには?
-
[解決済み] JavaScriptによるチェックボックスのチェック/アンチェック
-
[解決済み] RelativeSourceでWPFバインディングを使用するにはどうしたらいいですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み】チェックボックスがチェックされているかどうかをjQueryで確認する。
-
[解決済み] チェックボックスクリック時のイベントバブリングを停止させる方法
-
[解決済み] jQueryを使用してチェックボックスの変更を処理するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】C#で四捨五入する方法
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】HRESULTからの例外:0x800A03ECエラー