問題タブ [wpf-positioning]
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 - wpf mvvm キャンバスにベジエ曲線を追加
カスタム アニメーション イージング関数を作成する BezierSpline エディターを作成しています。ユーザーは、独自のイージング関数を作成するためにベジエ曲線パーツを追加する可能性があります。
DesignerVM を DataContext として共有する 2 つのユーザー コントロール DesignerControl と InfoControl を持つ MainWindow があります。
DesignerControl は、ドラッグ可能な Rectangles を使用してスプラインを表示および編集するためのメイン ビューであり、InfoControl は、ボタンとリストボックスを使用してスプライン パーツを作成、選択、削除し、テキストブロックを使用してコントロール ポイントを編集するためのビューです。
DesignerVM には、SplineVM の ObservableCollection が含まれています。
ObservableCollectionにバインドされた各ユーザーコントロールにリストボックスがあります。
ItemsPanelTemplate を使用してリスト ボックスを designerControl の Canvas に変更しました。今のところ、DataTemplate を ListBox.ItemTemplate として使用して、SplineControl という名前のユーザー コントロールの項目を変更しています。
この SplineControl には、曲線を定義するパスを含む固定サイズのキャンバスと、controlPoint を定義する 4 つの四角形があります。
編集: Rectangles のバインドに Rachel Lim の MathConverter を使用していますが、非常にうまく機能します。
アプリケーションを起動すると、ユーザーコントロールがメインウィンドウのキャンバスの左上隅にあり、代わりに左下隅にあるはずです。userControl の垂直方向の配置と水平方向の配置を下と左に設定しました...
また、userControl に Canvas.Bottom と Canvas.Left を設定しようとしましたが、何も変わりませんでした
何か不足していますか?
c# - WPFポップアップをコントロールに固定する方法は?
ツールチップではなく、テンプレート化されたポップアップを使用して、コントロールの検証エラーを表示することにしました (スタイリングに関して柔軟性が高いようです)。ポップアップが参照しているコントロールに固定されていることを確認するためのクリーンな方法を探しているので、ウィンドウが移動すると一緒に移動します...
私が考えていたのは、ビジュアル ツリーをたどってすべての PopUps IsOpen プロパティを手動で false に設定することでした...これはちょっとした「ハック」のようです。おそらく他のものの間でちらつくので、理想的とは言えません... これまでスタックオーバーフローで見た多くのソリューションにも落とし穴があるようです。アイデア?
c# - WPFボタンのXY座標は実行時に移動しますか?
WPFアプリケーションの動作がかなり奇妙になりました。実行時のボタンのXY位置は、Visual Studioのxaml-Editorで設定したときのXY位置とは異なるようです(名前はありますか?)
配置やパネルは設定されていません。マージンで設定しただけです。私のボタンには次のコードがあります:
<Button Content="OK" Height="23" Margin="213,319,4,7" Name="button3" Width="75" IsCancel="True" Click="button3_Click" IsEnabled="False" />
編集:
サイズ変更できないダイアログであるため、マージンは固定されています。ご覧のとおり、ボタンは少し左右に移動しています。
xaml-エディター:
ランタイム:
それはなぜですか、どうすれば修正できますか?
wpf - カスタム コントロールでの UIElement の配置
TextBox
内にと がButton
配置されているカスタム コントロールを開発していGrid
ます。
UserControl
問題は、 Say - Leftのカスタム プロパティを設定したときです。Button は の前に表示さTextBox
れ、Right の場合、ボタンはテキスト ボックスの右側に表示されます。
両方の要素を定義しているためGrid
、要件に従って配置できません。
fonts - 1と7はwpf aapplication全体のテキストボックスとテキストブロックで混同されています
私のWpfアプリケーションでは、テキストボックスまたはテキストブロックで178または217のように1と7が隣接して表示されると、それらが混同されます。事前に助けてくれてありがとう
![ここに画像の説明を入力][1]
c# - カスタム パネルの実装: 配置時にパネルの子のサイズを考慮する
私は、子の配置が絶対オフセットではなくパーセンテージで表されることを除いて、Panel
と同様に機能するカスタム WPF に取り組んでいます。私が呼んでいるは、次Canvas
のように使用されます。Panel
PercentageCanvas
PercentageCanvas
期待したほどではありませんが、動作しています。の子は、私が予想していたように、左上端ではなく、子の中心PercentageCanvas
に対して相対的に配置されます。この動作を実現するために使用する方法は次のとおりです。ArrangeOverride
この中心配置動作に対抗するには、各子の寸法を把握し、 の を計算する際に子のサイズを補正する必要があるようLocation
ですRect
。ただし、適切なオフセットを計算するために、子のサイズにアクセスできないようです。
メソッドで子のレイアウトを計算するときに、Panel の子のサイズをどのように考慮することができますArrangeOverride
か?
wpf - OnRenderSizeChanged で "Left" プロパティを変更するときのちらつきを防止する
幅が変わるとウィンドウが左に拡大するように、「アンカー」を右にしたいメインウィンドウがあります。OnRenderSizeChanged イベントを次のようにオーバーライドしてこれを行いました。
このアプローチの問題点は、ウィンドウが左に移動するときにちらつきが発生することです。これを修正する方法についてのアイデアはありますか? ありがとう。
wpf - WPF - 2 点間に傾斜したグリッドを描画する
メインデザイナーがユーザーがノード(楕円として表される)をシフトし、ノード間にリンクを追加できるようにするグラフ(ノードとリンク)設計プログラムを書いています。
問題は、リンクにラベルを追加したいということです。ラベルはリンクに対して平行である必要があります。つまり、リンクが斜めの場合、ラベルは水平であってはなりません。これらのリンクは通常、リンク ラインのすぐ上または下にあります。
リンクのビュー部分にラベルと線を含めるために、線の代わりにグリッドを使用しています。グリッドの両端の中点は、接続された 2 つのノードの位置に正確にある必要があります。
ただし、Line コントロールとは異なり、Grid コントロールには、2 つの「エンドポイント」をバインドするための X1 Y1 X2 Y2 プロパティがありません。Line コントロールは ContentControl ではないため、Grid を Line に埋め込むこともできません。
これに対する解決策はありますか?