タグ付けされた質問 「wpf」

Windows Presentation Foundation(WPF)は、Windowsベースのアプリケーションでユーザーインターフェイスをレンダリングするためのサブシステムです。

5
WPFユーザーコントロールはどのようにしてWPFユーザーコントロールを継承できますか?
次のWPF UserControlは、機能するDataTypeWholeNumberを呼び出しました。 次に、DataTypeDateTimeやDataTypeEmailなどのUserControlを作成します。 依存関係プロパティの多くはこれらすべてのコントロールで共有されるため、共通のメソッドをBaseDataTypeに入れ、これらの各UserControlがこの基本タイプから継承されるようにします。 しかし、それを行うと、エラーが発生します:部分宣言に異なる基本クラスがない可能性があります。 では、共有機能がすべて基本クラスにあるように、UserControlsで継承を実装するにはどうすればよいですか? using System.Windows; using System.Windows.Controls; namespace TestDependencyProperty827.DataTypes { public partial class DataTypeWholeNumber : BaseDataType { public DataTypeWholeNumber() { InitializeComponent(); DataContext = this; //defaults TheWidth = 200; } public string TheLabel { get { return (string)GetValue(TheLabelProperty); } set { SetValue(TheLabelProperty, value); } } public static readonly …
92 c#  wpf  xaml  user-controls 

8
MVVMは無意味ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 正統なMVVM実装は無意味ですか?新しいアプリケーションを作成していて、WindowsフォームとWPFを検討しました。WPFを選択した理由は、将来性があり、柔軟性が高いためです。コードが少なく、XAMLを使用してUIに大幅な変更を加えるのが簡単です。 WPFの選択は明白であるため、ブレンド性、分離の懸念、および単体テスト性を提供するため、アプリケーションアーキテクチャとしてMVVMを使用することで、最大限に活用できると考えました。理論的には、UIプログラミングの聖杯のように美しく見えます。この短い冒険。しかし、本当の頭痛になっています。実際には、予想通り、ある問題を別の問題と交換していることがわかりました。私は、正しい結果を得て、より良いプログラマーになるために正しい方法で物事をやりたいという点で、強迫的なプログラマーになる傾向があります。MVVMパターンは、生産性に関する私のテストを失敗させ、大きな厄介なハックに変わりました! 明確な例は、モーダルダイアログボックスのサポートを追加することです。正しい方法は、ダイアログボックスを表示してビューモデルに関連付けることです。これを機能させるのは困難です。MVVMパターンを活用するには、アプリケーションのレイヤー全体のいくつかの場所にコードを配布する必要があります。また、テンプレートやランバ式などの難解なプログラミング構造を使用する必要があります。頭を掻いて画面を見つめるもの。これにより、最近発見したように、メンテナンスとデバッグの悪夢が起こります。2度目の呼び出しで例外が発生するまで、ダイアログボックスが閉じられるとダイアログボックスを再び表示できなくなると言って、aboutボックスは正常に機能していました。ダイアログウィンドウに閉じる機能のイベントハンドラーを追加する必要がありました。それのIDialogView実装の別のものと、IDialogViewModelの最後の別のもの。MVVMがそのような贅沢なハッカーから私たちを救ってくれると思いました! この問題に対する競合する解決策を持っている人が何人かいますが、それらはすべてハックであり、クリーンで簡単に再利用できる、エレガントなソリューションを提供していません。ほとんどのMVVMツールキットはダイアログに光沢があり、ダイアログに対処する場合、それらは単なるカスタムボックスやビューモデルを必要としないアラートボックスです。 MVVMのビューパターン、少なくともその正統な実装をあきらめることを計画しています。どう思いますか?あなたが何かあったとしても、それはあなたにとって問題の価値がありましたか?私は単に無能なプログラマーなのでしょうか、それともMVVMが期待されているものではないのですか?
91 .net  wpf  mvvm 

9
XAML WPFでテキストボックスにフォーカスを設定する
このフォーラムや他のいくつかの投稿にもかかわらず、私はに焦点を合わせる方法を教えてくれる何かを見つけることができませんTextBox。 多くのラベルとtextBoxを持つuserControlがあります。フォームが読み込まれると、特定のtextBoxにフォーカスが移動します。 tabIndexを設定しましたが、うまくいきませんでした。 助言がありますか?
91 wpf  textbox  focus 


20
ObservableCollectionをクリアすると、e.OldItemsにアイテムがありません
私はここで本当に私を油断させてしまっている何かを持っています。 アイテムで満たされたTのObservableCollectionがあります。CollectionChangedイベントに接続されたイベントハンドラーもあります。 コレクションをクリアすると、e.ActionがNotifyCollectionChangedAction.Resetに設定されたCollectionChangedイベントが発生します。OK、それは正常です。しかし、奇妙なのは、e.OldItemsにもe.NewItemsにも何も含まれていないことです。私は、e.OldItemsがコレクションから削除されたすべてのアイテムで満たされることを期待します。 他の誰かがこれを見たことがありますか?もしそうなら、彼らはどのようにそれを回避しましたか? 背景:CollectionChangedイベントを使用して別のイベントにアタッチおよびデタッチしているため、e.OldItemsでアイテムを取得できない場合...そのイベントからデタッチできません。 明確化: 私はドキュメントがないことを知らないあからさまそれはこのように動作している状態。しかし、他のすべてのアクションについては、それが何をしたかを私に通知しています。だから、私の仮定は、それが私に教えてくれるだろうということです...クリア/リセットの場合も同様です。 自分で再現したい場合のサンプルコードを以下に示します。まずxamlから: <Window x:Class="ObservableCollection.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300" > <StackPanel> <Button x:Name="addButton" Content="Add" Width="100" Height="25" Margin="10" Click="addButton_Click"/> <Button x:Name="moveButton" Content="Move" Width="100" Height="25" Margin="10" Click="moveButton_Click"/> <Button x:Name="removeButton" Content="Remove" Width="100" Height="25" Margin="10" Click="removeButton_Click"/> <Button x:Name="replaceButton" Content="Replace" Width="100" Height="25" Margin="10" Click="replaceButton_Click"/> <Button x:Name="resetButton" Content="Reset" Width="100" Height="25" …


6
WPFのリンクボタン
ButtonをLinkBut​​tonのようにするにはどうすればよいですか。ハイパーリンクを使用したくありません... !! 助言がありますか
90 wpf  wpf-controls 

7
WPFのメソッドにバインドしますか?
WPFのこのシナリオでは、オブジェクトメソッドにどのようにバインドしますか? public class RootObject { public string Name { get; } public ObservableCollection<ChildObject> GetChildren() {...} } public class ChildObject { public string Name { get; } } XAML: <TreeView ItemsSource="some list of RootObjects"> <TreeView.Resources> <HierarchicalDataTemplate DataType="{x:Type data:RootObject}" ItemsSource="???"> <TextBlock Text="{Binding Path=Name}" /> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="{x:Type data:ChildObject}"> <TextBlock Text="{Binding Path=Name}" /> …
90 .net  wpf  data-binding  xaml 

16
ComboBox- SelectionChangedイベントには新しい値ではなく古い値があります
C#、. NET 4.0、VS2010。 WPFの新機能。MainWindowにComboBoxがあります。上記のコンボボックスのSelectionChangedイベントをフックしました。ただし、イベントハンドラーでコンボボックスの値を調べると、古い値になります。これは、SelectionChangedイベントではなく、「SelectionChanging」イベントのように聞こえます。 選択が実際に行われた後、ComboBoxの新しい値を取得するにはどうすればよいですか? 現在: this.MyComboBox.SelectionChanged += new SelectionChangedEventHandler(OnMyComboBoxChanged); ... private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e) { string text = this.MyComboBox.Text; } 注:イベント引数で渡されるオブジェクト(egeOriginalSource)を使用しても、同じ動作が得られます。


9
アプリケーションがビジーのときに砂時計を表示する
WPFを使用して作成されたビューの場合、アプリケーションがビジーで応答がないときに、マウスカーソルを砂時計に変更します。 1つの解決策は、 this.Cursor = Cursors.Wait; UIが応答しなくなる可能性のあるすべての場所。しかし、明らかにこれは最善の解決策ではありません。これを達成するための最良の方法は何ですか? スタイルまたはリソースを使用してこれを達成することは可能ですか? おかげで、
89 c#  wpf 

3
選択されている場合、ListBox項目のWPF DataTemplateを変更します
項目が選択されているかどうかに応じて、ListBox内の項目のDataTemplateを変更する必要があります(選択すると、異なる/詳細情報を表示します)。 問題のリストボックスアイテムをクリックすると(タブ操作でのみ)、DataTemplate(StackPanel)の一番上の要素にGotFocus / LostFocusイベントが表示されず、アイデアが見つかりません。
89 .net  wpf 

7
プロジェクトのルートディレクトリにあるテキストファイルを読み取る方法
プロジェクトのルートディレクトリに追加したテキストファイルの最初の行を読みたいのですが。つまり、ソリューションエクスプローラーでは、プロジェクトの.csファイルと一緒に.txtファイルが表示されています。 だから、私はやろうとしました: TextReader tr = new StreamReader(@"myfile.txt"); string myText = tr.ReadLine(); しかし、これはBinフォルダーを参照していて、ファイルがそこにないため、機能しません...これを機能させるにはどうすればよいですか?:/ ありがとう
89 c#  wpf 


10
WPFでGridViewColumnデータのサイズを自動化して右揃えにする方法は?
どうやって: ID列のテキストを右揃えにします 表示されるデータが最も長いセルのテキストの長さに応じて、各列のサイズを自動化しますか? コードは次のとおりです。 <ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}"> <ListView.View> <GridView> <GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="40"/> <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="100" /> <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/> </GridView> </ListView.View> </ListView> 部分的な答え: Kjetilのおかげで、GridViewColumn.CellTemplateは適切に機能し、自動幅はもちろん機能しますが、ObservativeCollection "Collection"が列幅よりも長いデータで更新された場合、列サイズは自動的に更新されないため、これはデータの初期表示: <ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}"> <ListView.View> <GridView> <GridViewColumn Header="ID" Width="Auto"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Id}" TextAlignment="Right" Width="40"/> </DataTemplate> …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.