問題タブ [markup-extensions]

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.

0 投票する
1 に答える
2030 参照

c# - WPFUserControlのボタンの有効な状態を動的に変更するための条件付きDataTrigger

データナビゲーターとして使用するUserControlを作成しました。このコントロールで2つのDependencyPropertiesを次のように定義しました(DependencyPropertyを意味します)。

次に、基本的なナビゲーション操作(最初、前、次、最後)を実行するための4つのボタンを配置しました。各ボタンのスタイルは次のとおりです。

このトリガーは、次のように、RelativeResource TemplatedParentが各ボタンのDataContextとして渡されると仮定して、DataCollectionDependencyPropertyがnullであるかどうかを確認するだけです。

次に、次のMarkupExtensionを作成して、比較操作と比較された値に基づいて、値を比較し、trueまたはfalseを返します。

最後に、このMEを使用して、各ボタンの「有効化」条件をテストしました。最初のボタンの条件は次のとおりです。

残念ながら、このソリューションは機能しませんでした。私はこの設計時の例外を受け取り続けます:

InvalidOperationException:ビューツリーの一部ではないViewNodeのNodePathを取得できません。

誰かがより良い解決策を持っていますか?たぶん私はここで大砲でハエを殺そうとしています。:)

前もって感謝します。エドゥアルドメロ

0 投票する
1 に答える
2288 参照

wpf - データトリガーのマークアップ拡張

私の WPF アプリケーションを変換するには、Binding オブジェクトを返すマークアップ拡張機能を使用します。これにより、アプリケーションの実行中に言語を切り替えることができます。このマークアップを次のように使用します。

データ トリガーを使用してボタンのテキストを変更したいと思います。

これにより、次の例外が発生します。

タイプ 'Setter' の 'Value' プロパティに 'Binding' を設定することはできません。「Binding」は、DependencyObject の DependencyProperty でのみ設定できます。

わかりました、これは私には理にかなっています。Resource で TextBlock を定義{StaticResource MyResource}し、DataTrigger の Setter Value で使用しようとしました。しかし、これを行うと、ボタンのスタイルが正しく適用されません...

ボタン内の文字列のスタイルを設定する機能を損なうことなく、マークアップ拡張機能を使用してボタンのテキストを変更するにはどうすればよいですか?

0 投票する
1 に答える
397 参照

wpf - Binding クラスから派生 (Silverlight 4.0)

既存のBindingクラスを使用して、次のように記述できます。

したがって、何でもEmail として記述できます。妥当性検査Binding自体はありません。BindingMoreから派生したクラスを書き始めたBindingので、最終的には、

を検証するためにトリガーされるものはどこSomeMethodにありますICommandか。それが私の目的であり、まだそれを書いていません。 delegateEmail

今のところ、このコードだけを書いています。

したがって、この段階でBindingMoreは、 は とまったく同じですがBinding、次のように書くと

実行時エラーが発生します。でも、書くときは、

それはうまくいっています。最初のケースで実行時エラーが発生する理由を誰か教えてもらえますか?

残念ながら、エラーは表示されません。それが示すのはこれだけです: 代替テキスト

また、XAML から次のエラー メッセージが表示されます (完全にビルドされて実行された場合でも (2 番目のケース))。

タイプ「local:BindingMore」はマークアップ拡張機能のように使用されますが、MarkupExtension から派生しません。

0 投票する
1 に答える
281 参照

wpf - WPF : VS2010 でカスタム マークアップ拡張機能を使用する場合のスペース キーの問題

VS 2008 のカスタム マークアップ拡張機能を使用して、ローカリゼーション ソリューションを開発しました。

当時は、次のように使用していました。

(DefaultText のスペースに注意してください)。(StackOverflow のテキスト色ツールが単語の色を変更する方法にも注意してください)。

しかし、問題なく動作し、問題なくコンパイルされます。

ただし、VS 2010 では、マークアップ拡張機能を実装するこの方法を使用してスペースを入力しようとすると、IDE は常にカンマを追加します。これにより、次のようになります。

もちろん、それはもうコンパイルされません...

それに対する 1 つの解決策は、このマークアップ拡張機能を別の方法で実装することです。

しかし、多くの行が追加され、ご想像のとおり、テキストブロックが 1 つだけではありません...

別の解決策は、スペースを入力するのではなく、別のスペースをコピーして貼り付けることです (これは VS 2010 でもコンパイルできますが、非常に粗雑です)。

私が見ているように、私たちのソリューションはベスト プラクティスではありません。

不便なくスペースを入力できるようにするには、どのようなベスト プラクティスをアドバイスしますか?

あなたの洞察に感謝します。

0 投票する
1 に答える
297 参照

wpf - WPF、ローカリゼーション: コントロール値の再評価

私は、WPF でのローカリゼーション方法について小さな調査を行っています。マークアップ拡張機能のアイデアについて聞いたことがあります。

<Label Content="{local:Translate {-- label ID here --}}" />

私はこのソリューションがとても気に入っています。実装が非常に簡単で、柔軟性が高いようです。ただ、ひとつ気になることがあります。ユーザーがランタイムでロケールを変更したとします。ローカライズされたプロパティが新しい言語に一致するように再評価されるようにするにはどうすればよいですか?

0 投票する
2 に答える
75 参照

wpf - WPFはすべてのコントロールの横に小さな数を表示します

多くの FrameworkElements (TextBlock、CheckBox、ListBox ..) があり、すべてのコントロールに加えて少数を表示できるようにしたいと考えています。

いくつかのテキスト ³

MarkupExtension を作成するというアイデアが思い浮かびました。ここでは、その番号を次のように記述できます。

そして、それを何らかの方法でコントロールのテンプレートに追加します。

しかし、皆さんにはこの問題に対するより良い解決策があると確信しています;)

0 投票する
3 に答える
2181 参照

wpf - CustomBindingMarkupExtensionのパスをResharperに解決させる方法

拡張されたBinding-Markup-Extensionを作成したいのですが、これは通常のWPF-Bindingと同じように動作しますが、さらにいくつかのことを行います(異なるデフォルトを使用する、動作を追加するなど)。コードは次のようになります。

ResharperにBinding-Pathを正しく解決させることができないことを除いて、XAMLインテリセンスを含めてすべて正常に機能します。つまり、このコードを使用して[Strg] +「CurrentText」をクリックすると、Resharperはvs2010でCurrentText-Propertyを定義するコードに移動できます。

しかし、実行時に正しく機能するバインディングを使用すると「CurrentText」にカーソルを合わせるとツールチップが表示され、「MS.Internal.Design.Metadata.ReflectionTypeNode」であり、[Strg]+クリックによるナビゲーションは表示されません。

私は次のことを試しました:

  • バインディングから派生
  • BindingDecoratorBaseから派生
  • CustomBindingクラスの「Extension」サフィックスを省略します
  • Markup-Extensionを別のアセンブリに配置します
  • ConstructorArgumentAttributeを使用する
  • Path-PropertyのタイプstringおよびタイプPropertyPathのプロパティ
  • 元のクラスBindingとBindingBaseも調べましたが、コードにこれ以上の違いは見つかりませんでした。ここで何が役立つべきかアイデアはありますか?それとも、これは、自分のMarkupExtensionsでは決して得られないBinding-MarkupExtensionの特別な扱いですか?

    アップデート16.03.2011:Resharperのバグまたは欠陥である可能性もあり、Jetbrainsは問題を調査しています:http://youtrack.jetbrains.net/issue/RSRP-230607

    アップデート10.12.2013:その間、この機能は機能しているようです(R#7.1.3、おそらく以前のバージョンでも)、私は実際にBindingDecoratorBaseでこのアプローチを使用しており、とても気に入っています。MarkupExtensionが「Binding」で終了する場合にのみ機能するかもしれませんが、私の場合は機能するので、私は満足しています。

    0 投票する
    1 に答える
    384 参照

    c# - .net 4.0 マークアップ拡張機能 WPF

    私は別の苛立たしい問題を抱えて戻ってきました。問題は .net 4.0 フレームワークにあります。TargetProperty 型のキャストに問題があるようで、msdn フォーラムでも報告されています。ここで使用するコードを掲載しました。誰かが私に解決策を提案できますか?

    この問題について言及している MSDN リンクを以下に貼り付けます

    0 投票する
    1 に答える
    720 参照

    wpf - XAML でマークアップ拡張機能を使用したコレクション プロパティの入力が失敗する

    コレクション (リスト) プロパティに、マークアップ拡張機能によって提供される値を入力しようとしています。コレクションを提供するプロパティにパブリック セッターがある場合、これを行うには問題があります。XAML 実装 (.NET 3.5 を使用) のバグだと思いますが、よくわかりません。

    次のテストクラスを検討してください

    次のマークアップ拡張機能は、文字列を提供するだけです。

    これで、次のテスト ケースはすべて正常に動作します。

    しかし、このテスト ケースは失敗します。

    失敗したケースでは、'string' を 'List' に変換できないという例外がスローされます。同様のケース d) と c) が正常に機能する場合、これが失敗する理由の説明はありますか?

    0 投票する
    1 に答える
    487 参照

    silverlight - Silverlight XAML で「タイプ」をインスタンス化する方法はありますか?

    Silverlight には非常に魅力的なx:Type MarkupExtension がないことはよく知られています (MarkupExtensionは Silverlight ではまったくサポートされていません)。それに対する動的な回避策はありますか?

    列挙型 ( x:Static) はどうですか?

    CommandParameter をTypeまたはEnum値に設定する必要がありますが、これらはどちらも Silverlight ではサポートされていません!