問題タブ [frameworkelementfactory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - FrameworkElementFactory をデータ オブジェクト プロパティにバインドする
3 つの FrameworkElementFactory オブジェクト ( 2 つの子 ( CheckBoxとTextBox )が追加されたStackPanel )を使用してコードでDataTemplateが作成されるListBoxがあります。ListBoxのItemsSourceにバインドされたコレクション内の項目オブジェクトは、基本的に、通常はListControlの任意の型で表示されるものと同じ型の Item オブジェクトです。私がやろうとしているのは、 DataTemplateのCheckBoxのIsCheckedプロパティをItem オブジェクトのブール値プロパティにバインドすることです。リストボックス単一選択、複数選択、複数チェックの 3 つのモードをサポートします。実装しようとしているモードはマルチチェックであるため、 CheckBoxのIsCheckedプロパティは項目オブジェクトのSelectedプロパティにバインドされます。これにより、WPF ListBoxItemの IsSelected プロパティが true の場合ではなく、 ListBoxItemのCheckBoxのIsCheckedプロパティが true の場合にのみ項目が選択されていると見なされる動作が作成されます。データ オブジェクトの boolean プロパティを IsChecked プロパティにバインドする必要があり、IsChecked プロパティが変更されると、アイテム オブジェクトのSelectedプロパティが更新されるため、舞台裏の SelectedItemsコレクション。
先ほど説明した簡略化されたコードを次に示します。
CheckBoxのイベント ハンドラーである、含めていないコードがいくつかあります。Wpf ListBoxに複数の選択がある場合、範囲内のすべての CheckBox が、クリックされた CheckBox の値に切り替えられます。Item の Selected プロパティを送信者の IsChecked プロパティに手動で設定すると、すべて正常に動作しますが、データバインディングは機能するはずであり、これを手動で行う必要はないと思います。この場合のデータバインディングは非同期になりますか、それとも明示的に何かをする必要がありますか?
c# - FrameworkElementFactory は親リソース (スタイルなど) を「無視」します。
いくつかのカスタム ツリービューを作成しようとしています。これまでのところすべて正常に機能していますが、スタイルに少し問題がありました。ウィンドウのリソースに追加する単純な「RedBackground」スタイルがあります。通常の要素を追加すると、正常に機能します。
カスタム アイテム テンプレートを使用してツリービュー アイテムをレンダリングすると、リソースが無視されます。リソースをテンプレートに直接追加すると、正常に機能します(コードでマークされているように)...
私は明らかに、スタイルを ItemTemplate ディレクトリに追加する必要はありません。今後の開発では非常に複雑になります。ある種の「バインディング」または「ルックアップ」が欠落していると思います...依存関係プロパティに関連していると思います...またはこの方向の何か。
おそらく誰もがより多くの洞察を持っています。これはテンプレートを作成するコードです(utilクラス内ですが、すべてをきれいに保つためだけです):
そして、ここで私の非常に単純なカスタム ツリー ビュー
わかりました。確かに、スタイルを作成するコードは次のとおりです。
ヒントをありがとう...クリス
c# - FrameworkElementFactoryからバインディングを取得する
GirdViewでは、一部の列のテキストを右揃えにする必要があります。そのために、TextBlockを含むDataTemplateを作成します。
他のクラスでは、GridViewColumnsのバインディングにアクセスする必要があります。この列のバインディングにアクセスするにはどうすればよいですか?
c# - C#でのDataTemplateの構築
C#で次のDataTemplateをビルドしようとしています
私はここまで到達しました、そして私は理解することができません、Grid.ColumnDefinitions
そして私は例外を得ています
FrameworkElementFactoryは、この操作のために封印されたテンプレートに含まれている必要があります。
どんな助けでもいただければ幸いです。
c# - プログラムでテンプレートとしてWPFにグリッドを作成します
プログラムでスタイルを使った基本的なユーザーコントロールを作成したいと思います。このスタイルでは(問題ありません)を追加したいのですがGrid
、このグリッドに列定義を追加できません。
私のサンプルコードは
ただし、FrameworkElementFactory
with型を作成ColumnDefinitionCollection
すると例外がスローされます"'ColumnDefinitionCollection' type must derive from FrameworkElement, FrameworkContentElement, or Visual3D."
誰が私を助けられるか?
wpf - コードで ControlTemplate を設定する [WPF]
ControlTemplate でいくつかの UI 要素を使用して Grid オブジェクトを設定するにはどうすればよいですか? このコードを使用してみましたが、Grid オブジェクトを FrameworkElementFactory オブジェクトに設定する方法がわかりません。ありがとう
コード ビハインドで xaml で設計されたスタイルを置き換えるために必要です。
実行時にテキストボックスのバインディングパスをコードから変更したいので、私はそれをしなければなりません。他の方法を知っていますか?ありがとう。
c# - ControlTemplate XAML を C# に変換する
次のコードを純粋な C# に変換しようとして困惑しました。この XAML コードは、何でも角を丸くする方法に関する Cavanaghs ブログからのものです。コードは機能しますが、場合によっては動的にする必要があるため、C# に変換する必要があります。あなたがそれを助けることができれば、それは素晴らしいことです.
これまでのところ、次のものがありますが、エラーが発生しています。
私が知る限り、VisualBrush を FrameworkElementFactory (クラッシュ) として作成することはできませんが、それを通常の要素 VisualBrush として宣言すると、FrameworkElementFactory であるため、境界線を Visual として渡すことができません。
単に私は迷子になっています。どんな助けもいただければ幸いです。助けてくれてありがとう
wpf - WPF バインディング (dataGrid) OneWayToSource、UpdateSourceTrigger-Explicit - 望ましくないソース更新
OneWayToSource、UpdateSourceTrigger.Explicit シナリオで望ましくないソース更新に問題があります。
背景: パスワード列を持つユーザー データを含む DataGrid があります。クラス DataGridPasswordColumn を DataGridTemplateColumn から派生させました。
非編集モードでダミーのマスクされたデータを表示します (例: ####)。これは、CellTemplate を定数値を持つ TextBlock に設定することによって行われます。
また、編集モードで 2 つの PasswordBox コントロールと [OK] ボタンを表示するには、次のコードを使用します。
PasswordEntry は、ユーザー コントロールです。
- 「SelectedPasswordProperty」という名前の DependencyProperty があります
ユーザーが OKButton をクリックするのを待ってから、いくつかの検証を行います (2 つの PasswordBox の内容は同じですか?)。検証に問題がない場合は、次のコードを介して UpdateSource を呼び出します
BindingExpression be = this.GetBindingExpression(SelectedPasswordProperty); if (be != null) { be.UpdateSource(); }
ソースの更新は問題ありません。
問題は、セル編集テンプレート (PasswordEntry UserControl) が開かれると、「NULL」の値を持つ望ましくないソース更新が 1 つあることです。
UpdateSourceTrigger = UpdateSourceTrigger.Explicit が使用されている場合、UpdateSource() が呼び出されない限り、ソースの更新はないと予想しました。
これまでのところ、このソースの更新を抑制する方法は見つかりませんでした。私は試した
と
つまり、ソースがまだ (NULL 値で) 更新されていました。
これは WPF のバグですか? 誰かが同じ問題を抱えていましたか?
c# - FrameworkElementFactory での画像の URI バインディング
コードで DataTemplate を作成していますが、XAML を使用できません。:(
テンプレート内に画像を作成できましたが、ico ファイルへのパスをハードコーディングした場合のみです。その文字列をアイテムにバインドできるようにしたいと思います (変更された ListView で DataTemplate を使用しています)。
ここに私のコードがあります:
ありがとう!
wpf - FrameworkElementFactory は、この操作のシールされたテンプレートにある必要があります
C# コードで独自の DataTemplate を作成するためのスニペットを作成しました。そして、それをデータグリッド列の編集テンプレートに追加します。を呼び出すobject templateContent = tc.CellTemplate.LoadContent ( );
と、アプリケーションがクラッシュし、「FrameworkElementFactory は、この操作のシールされたテンプレートにある必要があります。」という例外がスローされました。これは、データテンプレートを作成するコードです。