問題タブ [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.
c# - カスタムMarkupExtension内からスタイルのターゲットインスタンスを取得します
MyMarkupExtension
暗黙のスタイル内でカスタムを使用しようとしています:
とにかくMenuItem
、スタイルが適用されるオブジェクト、またはそのDataContextをProvideValue
メソッド内から取得することは可能ですか?から取得した値IProvideValueTarget.TargetObject
はセッターです。
c# - MarkupExtension: 単純なプロパティを DependencyProperty に変換する
WPFLocalizationExtension ( CodePlex で利用可能) を使用して、WPF アプリケーションで文字列をローカライズしています。この単純な MarkupExtension は、次のような単純なシナリオでうまく機能します。
しかし、次のようなもっと複雑なことを試すとすぐに行き詰まりました。
(リソース付きwindowTitle = "MyApp v{0}"
)。
FormatSegment1 はプレーンな INotifyPropertyChange プロパティであるため、何もバインドできません。FormatSegment1 が DependencyProperty であれば可能だったので、ソースをダウンロードしてパッチを当ててみました。
修正しました
クラスはBaseLocalizeExtension
から継承しMarkupExtension
ます:
ビルドすると、通常の"GetValue/SetValue does not exist in current context"
エラーが発生します。BaseLocalizeExtension
クラスを継承させようとしましDependencyObject
たが、大量のエラーが発生しました。
MarkupExtension で xaml バインド可能な DependencyProperty (または同様にバインド可能なもの) を使用する方法はありますか?
ヒントをありがとう
silverlight-5.0 - SL5 のマークアップ拡張機能からターゲット オブジェクトを更新する方法は?
Silverlight 5 のマークアップ拡張機能でこのコードを試しています。
depObj は正しく提供されているようですが、depProp は DependencyProperty 型ではないようです (型は System.Reflection.PropertyInfo の System.String です)。キャストの結果は null になります。
depProp は正しい Text または Content プロパティを表していますが、それが DependencyProperty でないと値を設定できません。
任意の入力をいただければ幸いです。
シコ
silverlight - DependencyPropertiesを使用したIMarkupExtension
IMarkupExtension<T>
バインディング用のDependencyPropertiesを持つカスタムマークアップ拡張機能を作成しようとしています。ただし、マークアップ拡張機能がXAML解析時に解決され、バインディングが後で解決されるという問題を解決するのに苦労しています。バインディングを介して何かを取得することはないようです。バインディングは常にnullであり、変更コールバックを呼び出すことはありません。
ドキュメントには、マークアップ拡張機能のインスタンスを返すことについての説明がありますが(「現在のマークアップ拡張機能インスタンスを返す」の下)、ターゲットのタイプが間違っているため、爆発するようです。このSL5MultiBindingは、内部ソースオブジェクトへのプロキシバインディングを返すようですが、それを機能させることができません。バインディングがまだ設定されていません。
DependencyPropertiesを使用してマークアップ拡張機能を実際に実装する方法についての確かな情報を見つけることができないようです(多くの人がSL5に興奮しているように見えましたが...)。誰かがガイダンスやチュートリアルを提供できますか?
具体的には、次のように、リストへのバインドを行うためのパスを動的に構築できるマークアップ拡張機能を作成しようとしています。
{Binding List[Index]}
基本的に、インデックスが動的であるようなバインディングを出力するようにしたいと思います。たとえば、リストとインデックスのMultiBindingでこれを行う目的は、オブジェクトに直接バインドして変更通知を受け取るようにすることです。(これを行うためのより良い方法がある場合...)
wpf - 動的に変更されたシステム カラーを操作するには?
動的リソース (コンバーターを許可しない) とカスタム マークアップ拡張機能 (1 回のみ評価される) の両方がうまくいかないまれなケースがあります。現在のシステム カラーの色あせたバリアントに基づいてグラデーション ブラシを作成したいと考えています。これらのブラシは、システムのカラー テーマが変更されるたびに更新される必要があるため、ユーザーがアクセシビリティ テーマに切り替えた場合にアプリケーションを再起動する必要はありません。
WPF アプリケーション内で実行時にシステムのカラー テーマの変更を検出することは可能ですか? 何かのイベント?
wpf - VisualStudio2012インスタンスのデザイン時をデバッグする方法
WPF MarkupExtensionを開発していますが、設計時にエラーが発生しました。以前のバージョンのVisualStudio2010では、Visual Studio 2010の2番目のインスタンスを開始し、既に実行中のインスタンスのプロセスに接続して、ブレークポイントを設定し、デザイン時の動作をデバッグすることができました。
ただし、Visual Studio 2012では、別のVisual Studio 2012のプロセスにアタッチすることもできますが、2番目のインスタンスにシンボルが読み込まれないため、VisualStudio2010のようにデザインタイムをデバッグできません。
このデバッガーを実行するにはどうすればよいですか?
私が試したこと:
- 「devenv.exe/RootSuffixExp」のトリックは成功しませんでした
- 常に管理者として実行する
- すべてまたはデフォルトのシンボルをロード
- ネイティブコードを使用した場合と使用しない場合のデバッグ(プロセスのアタッチ)
- .NET 4コードを使用した場合と使用しない場合のデバッグ(プロセスの接続)
c# - 動的列挙コンバーター
アプリケーションで可能なすべての列挙型に対して動的な双方向コンバーターを作成したいと考えています。
列挙型ごとにコンバーターを作成する必要はありません。列挙型からバイトへ、およびバイトから列挙型への変換を提供するコンバーターを 1 つ作成したいと考えています。
そこにどう行けますか?私のアプローチはすでに双方向ですが、コードに静的キャスト(MyEnum)が必要です。
c# - MarkupExtensionの引数としてStaticResourceを使用すると、WPFでNullReferenceExceptionが発生します
問題を最小限のコードに単純化した後でも、何が原因であるのか理解できませんNullReferenceException
。
新しいWPFアプリケーション「MarkupExtParam」を作成します。コードを置き換えます:
MainWindow.xaml:
MainWindow.xaml.cs:
アプリケーションを実行すると、次の例外がスローされます。
DataTemplateを使用せずに<TextBlock Text="{my:Ext {StaticResource foo}}"/>
外部に配置すると、すべて正常に機能します。
.NET Refelectorで生成されたPDB(パブリックソースには内部クラスが含まれていないようです)を使用してデバッグを試みましたが、Reflectorは高度に最適化されたアセンブリ用の適切なPDBを生成できないため、ブレークポイントが機能せず、ほとんどの変数が機能しません。 XAMLパーサーがStaticResourceHolder(StaticResourceExtensionのサブクラス)をFooに割り当てようとして失敗することを理解しました(ただし、なぜ発生するのか理解できません)。
質問:問題を解決するにはどうすればよいですか?多分私は何か間違ったことをしているだけですか?
html - css、jsなどを使わずにHTMLのみをクローラー/ロボットに送信しますか? ネガティブランキングのGoogleを引き起こす可能性はありますか?
今日、一部のクローラーが私のサイトを通過し、いくつかの css、js、画像、およびその他のファイルにアクセスしようとしました。これもスマートなもので、javascript も解釈し、javascript コード内で組み立てられた (そして唯一知られている) URL を実行したいと考えています! それは私をかなり心配しています。
サイト上の私のコードはこの奇妙な動作を検出し、それについて 3 通の電子メールを送ってきましたが (これは私が過去に作成したブロッカー クラスであり、完全に機能し、さらなるアクセスをブロックします (3 回の攻撃の後、攻撃者は停止します)、私はこれらの悪者を最大限に排除して、ネットワーク トラフィックを削減し、サービスを保護し、このばかげたことに費やす時間を節約したいと考えています。
だから私はちょうど考えていた、ストリップされたhtmlファイルのコンテンツ(フォーム、css、およびjs宣言なし)をロボット/クローラーに送信しますが、それは良いものに影響を与えてはなりません. クローラーはマークアップを必要とせず、コンテンツだけが重要であるというこの背後にある考え方ですよね? ランキングにとって重要ではないファイルにアクセスしようとするのは悪意のある人だけです....しかし、そこにない場合は心配する必要はありません。だから私の質問は:
これを行うのは安全ですか、つまり、グーグルはあなたがコンテンツを偽造していると「考えていない」のでしょうか? 特にクローラーのパーツの取り外しは、元の内容とは少し異なります。
これを経験した人はいますか?
PS: 私のテンプレート システムは、ユーザー エージェント/デバイス固有の条件を使用して、別のマークアップや設定などを提供できるため、実装は簡単です。
これは私が実装しようと考えている例です: