一部のXMLをDrawingMLからXAMLに変換しています。残念ながら、XAMLは空白で期待どおりに機能していませんが、回避策を見つけました。ここに問題があります:
問題の説明
TextBlockに次のように書きたいです。
こんにちはジョン、寿司Aは寿司Bに何と言いましたか?
だから私は書くだろう:
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run>
<Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
これでは、望ましい結果が得られません。代わりに、以下を生成します。
こんにちはジョン、寿司Aは寿司Bに何と言いましたか?
John
「 」と「 」の間のスペースに注目してください,
。奇妙な、え?これは、XAMLが実行間にスペースを追加するためです。なぜそうなるのかわかりません。私は本当に上記とまったく同じフォーマットが必要なので、コンマを太字にするなど、フォーマットを変更するオプションはオプションではありません。
部分的な解決策
奇妙なことに、これを回避する方法があります。つまり、XAMLが追加する余分なスペースを失うために、実行を同じ行に配置する必要があります。理由はわかりませんが、そうです。したがって、以下は実際には問題なく機能します。
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run><Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
実行#2と#3(4回の実行のうち)が同じ行にあることに注意してください。
質問
私が抱えている問題は、XMLリテラルを使用して上記を記述する方法が見つからないことです。私がこれを試してみると:
Dim tb = <TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run><Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
これは常に以下のように作成され、4つの実行が別々の行で行われます。
<TextBlock>
<Run>Hey</Run>
<Run FontWeight="Bold">John</Run>
<Run>,</Run>
<Run FontStyle="Italic">what did Sushi A say to Sushi B?</Run>
</TextBlock>
XMLをXMLリテラルで記述されたとおりに正確に記述する方法を知っている人はいますか?
ボーナス
あなたが質問に正しく答えれば、私はあなたに冗談のオチを教えます:)