問題タブ [listboxitem]
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.
silverlight - Silverlight relativebinding ItemTemplate ListboxItem - リストボックス
ListBox コントロールの ItemTemplate としてそのインスタンスを使用できるように、プログラムでクラス (ViewGrid と呼びます) を作成しました。もちろん、それはリストボックス項目の私のデータ テンプレートです....
また、私の ViewGrid クラスでは、IsChecked という依存関係プロパティを取得しました。これを ListBoxItem のIsSelectedプロパティと同期させたいと考えています。SL では、WPF のようにバインドに対する relativesource-findancestor-ancestortype のサポートがないことに気付きましたが、それでも、自分の IsChecked プロパティを、ListBox コントロールの内部生成された ListBoxItem の IsSelected プロパティと同期させる方法を見つける必要があります。手伝ってくれますか?
wpf - ItemTemplateのTextBoxにフォーカスがある場合は、ListBoxItemを選択します
コレクションをバインドDataTemplate
するクラスにを追加しました。ListBox
これはまさに私がやりたいことをします。をクリックしてもTextBox
、関連付けられたListBox
ものが自動的に設定されません。これはコードで行うことができますが、これをコンポーネントとして使用したいと思います(その場合は驚くことではありません)。ListItem
Selected
これを達成する方法について何かアイデアはありますか?
それはうまくいかないようです、それは私に何もクリックさせません。私は何かを逃したことがありますか。これが私の新しいXAMLです。
2回クリックするのは良い機能だと思います。
silverlight - VisualStateManager を使用して ListBoxItem のテキストの色 (前景) を変更するにはどうすればよいですか?
これが取引です。ListBox を作成してスタイルを設定できます。Expression Blend 3 で状態が使用可能になるように、テンプレートのコピーを編集できます。また、状態を変更して、ライン アイテムの選択時に背景色が変更されるようにすることもできます。しかし、ContentPresenter のためにテキストの前景色を変更することはできません! この一見簡単なタスクを達成する方法を示す XAML の例はありますか?
答えは ContentPresenter を削除し、ある種の ListBoxItem スタイルまたはテンプレートに置き換えることにあるようですが、ここで行き詰まります。ListBox の ContentPresenter は、他のテンプレート「{TemplateBinding Template}」を参照しています - それはどこですか? また、何らかの方法で ContentPresenter を変更しようとすると、States パネルが空白になり、XAML の泥沼が残ります。幸いなことに、CTRL-Z があります。
Microsoft は、XAML のアプローチを再考するか、Blend をより完全なツールにする必要があると思います。それが機能する方法は、任意の要素をクリックしてその状態を定義できるようにすることです。ルールを破ろうとしている場合、Blend はこれを教えて修正する方法を提供する必要があります。状態パネルを空にするだけでは役に立ちません。
wpf - ListBoxアイテムにフォーカスを設定すると、キーボードナビゲーションが壊れます
プログラムでListBoxアイテムを選択した後、選択範囲を移動するには、下/上キーを2回押す必要があります。助言がありますか?
意見:
コード:
wpf - WPF。listitemを強制的に再描画するにはどうすればよいですか?
人をListBox
説明するオブジェクトを含むがあります。このオブジェクトは部分的にのみ埋められ、アイテムがクリックされると完全に埋められます(時間のかかる操作)。まだ塗りつぶされていないオブジェクトのスタイルを変更して、部分的に塗りつぶされたアイテムが斜体で表示されるようにします。
私はItemTemplate
:を作りました
を定義しましたStyle
:
それは実際に機能します。私が持っている問題は、アイテムがクリックされたときにスタイルを更新することです。オブジェクトが塗りつぶされ、スタイルが斜体から通常に変更されます。
ListItem
またはを強制的ListBox
に再描画してスタイルを更新するにはどうすればよいですか?または、HasDataプロパティが変更されたときに何らかの通知を使用する必要がありますか?
wpf - WPFスタイルトリガー:1つのスタイルをさまざまなプロパティに適用できますか?
これを行う方法が必要なようです。
2つのプロパティトリガーに基づいて、リストボックスにItemContainerStyleを適用しています。ご覧のとおり、私はまったく同じトリガーの開始/終了アクションのセットを使用しており、2つの異なるプロパティに適用されています。<Trigger Property = "prop1" OR Property = "prop2">に相当するものはありますか?(明らかにそのようには見えないでしょうが、それはおそらく意味を理解します。)
wpf - ツールチップ内にデータグリッドを表示するにはどうすればよいですか..データグリッドのツールチップではありません!
リストボックスとそのバインドがあります。そして、私はこのようなリストボックス項目にツールチップを持っています
今、データバインドされたツールチップ内にデータグリッドを表示したい....
何かアイデアをください???
ありがとうございました
wpf - WPF - ItemsSource がバインドされている場合、ListBox はスタイルを無視します
チェックボックスリストとしてレンダリングされるように、WPF でスタイル設定された ListBox を作成しました。
ListBox の項目を手動で入力すると、スタイリングは完全に機能します。ただし、代わりに ListBox の ItemsSource を静的リソース (必要な項目を含む ItemsControl) にバインドすると、スタイリングが完全に削除されます。
スタイルは次のとおりです。
スタイルを正しく表示する ListBox のコードは次のとおりです。
スタイルを無視する ListBox のコードは次のとおりです。
誰かが助けてくれることを願って-私はこれらすべてにかなり慣れていないので、考えられることはすべて試しましたが、読んだすべてのことから、ItemsSource を設定するとアイテムを手動で設定するのと同じ結果になるはずだと思うので、できます。これが機能しない理由がわかりません。
ありがとう、
で
wpf - WPFのリストボックスにプログラムでコマンドを追加する
私の WPF アプリケーションには、アイテムを含むリストボックスがあります。リストボックスは、XAML から xmldataprovider を介して設定され、リストボックスの Itemssource プロパティにバインドされます。
XAML から、コマンドをリスト ボックスにバインドするには、次のようにします。
しかし、コマンドを各リストボックス項目にプログラムでバインドする方法がわかりません。どうやってするの?
前もって感謝します。
コメントとして投稿しないことで最初に申し訳ありません。これをすべてコメントに入れることはできません。
わかりました、はい、ICommandSource の Executed プロパティと CanExecute プロパティを使用していませんが、それらをカスタム クラスに登録して実装しました (xaml でもコメントされています)。カスタム クラスではなく routedCommand で指定しました。ウィンドウのコンストラクターで次のように指定しました。
WinMain コード ビハインド:
そして、これらのメソッドを WinMain コード ビハインドにも実装します。
WinMain XAML では、次のようにコマンドを呼び出します。
また、カスタム クラス CommandListBox には CanExecuteChanged があり、バックグラウンド ワーカーが終了したかどうかに応じて、コントロールを有効または無効にしたことがわかります。
しかし、カスタム クラスでは、OnSelected というイベント ハンドラを実装していません。
実装しなくても、カスタム コントロールの呼び出しコマンドが実行され、CanExecute メソッドに到達し、バックグラウンド ワーカーが終了しているかどうかに応じて、CanExecute が正しい値 (true または false) を取得し、CanExecute がその値を変更すると、カスタム コントロールの CanExecuteChanged が発生します。 . バックグラウンドワーカーが開始すると無効になりますが、終了すると有効になりません。バックグラウンド ワーカーが終了すると、CanExecuteChanged が実行され、this.Enabled が正しい値 (true) を取得していることがわかりますが、UI で何らかの理由で、正しい値を取得しているにもかかわらず、RunWOrkerCompleted (バックグラウンドで) にもかかわらず、コントロールは無効のままです。 worker) CommandManager.InvalidateRequerySuggested() で強制的に UI を更新します。
行のコメントを外すことでこれを解決します。
if (LayoutListBox != null) LayoutListBox.IsEnabled = !cBgWorkers.isRunning;
CanExecute メソッドで。何が起こるかわかりません。
もし私があなたの言うことをするなら、それをする必要はありません:
CommandBinding_Executed および CommandBinding_CanExecute の実装。私は正しいですか?
しかし、これらのメソッドを削除すると、どこで this.enabled = !cBgWorkers.isRunning を設定できますか?
カスタム コントロールの isEnabled プロパティを WPF で自動的に設定したいと考えています。これを行う方法?
前もって感謝します。
アタッチされた動作についてあなたが言う記事を適用して、いくつかの変更を加えてリストボックスに適応させています。うまくいかないか、何か間違ったことをしているのかもしれません。私が望むのは、長いタスク (バックグラウンド ワーカー) が実行されているときに、ListBox メンバー (listBoxItems) を選択できないようにすることです。したがって、私が変更した記事の方法の1つは次のとおりです。
(*) cBgWorkers は、いくつかのメソッドとプロパティを持つ public static Class です。プロパティの 1 つは、バックグラウンド ワーカーが現在実行されていないことを示す isRunning です。次に、バックグラウンドワーカーが実行されていない場合、リストボックスメンバーを有効にする必要があります。それ以外の場合は無効にする必要があるため、ユーザーがリストボックスアイテムをクリックしても、以前に無効にしたため、現在のページが別のページに変更されません (各リストボックスアイテムには1つが添付されています)私のメインアプリケーションのページ)。
バックグラウンド ワーカー (bw) の 1 つまたはすべてが実行されていて、リストボックス アイテムを選択すると、すべて問題ありません。bw が実行されているため、リストボックス アイテムは無効になり、現在のページを別のページに変更することが回避されます。もちろん、リストボックス項目 (またはリストボックス項目) を無効にすると、無効になっているため再度選択できません。それが私の問題です。bw の実行中に無効になったリストボックス項目を bw が終了したときに、それらは再び有効になります。残念ながら、WPF によって自動的に行われるわけではなく、コマンドにはこの利点があります (コントロールは WPF によって自動的に更新されます)。それで、bwが実行されているかどうかにかかわらず、リストボックス項目を無効/再有効化する方法は?
私が知り、見る限り、アタッチされたビヘイビアーの利点の 1 つは、アクションを常に呼び出すわけではないため (選択などのアクションが生成された場合のみ)、より効率的であると考えられることです。コマンドは、コントロールにバインドされたアクションを実行できるかどうかを常に (頻繁ではありませんが) チェックしています (実行できる場合、WPF は自動的にコントロールを有効にし、そうでない場合は無効に見えます)。
ありがとう。
wpf - ListBoxItem IsSelected スタイル
私はまだそれを取得しませんでした。ListBox のデフォルトの動作をオーバーライドする方法を正確に教えてください。ListBoxItem が選択されるたびに、Border の背景を変更する必要があります。行全体の背景ではなく、指定された境界線の背景のみ。