2

ASP.NETから来ているので、このWPFのものは混乱を招きます。私がやりたいのは、必須フィールドを示すためにラベルの横に赤いアスタリスクを付けることだけです。いろいろと遊んでみると、これで実際にうまくいくことがわかりました。

<TextBlock Grid.Row="6" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
    <Label Foreground="Red" Content="*" /><Label Content="Heavy Weight" />
</TextBlock>

これを思いついたばかりなので、経験豊富なWPF開発者が採用するアカデミックルートであるとは確信していません。さらに、このマークアップは、アスタリスクとラベルの間に大量の空白を置きます。HTMLでは、span要素は次の兄弟要素のすぐ横にレンダリングされます。参考までに、ラベル内にラベルを入れてみましたが、VS2010は「プロパティ'コンテンツ'が複数回設定されている」と吠え続けました。

何か案は?

4

3 に答える 3

4

このようなものがより適切です:

<TextBlock Grid.Row="6" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
    <Span Foreground="Red">*</Span>Heavy Weight
</TextBlock>

これは、TextBlockのコンテンツに何を入れることができるか、より具体的にはここに概要があります

于 2011-04-14T15:37:50.300 に答える
3

もう1つの方法は

<TextBlock Grid.Row="6" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
    <Run Foreground="Red" Text="*" />
    <Run Text="Heavy Weight" />
</TextBlock>

ところで、Damascusのソリューションはより多くのUI要素を追加します。CodeNakedのソリューションでは、テキストをデータバインドするのは困難です。

于 2011-04-14T16:52:08.713 に答える
1

説明は、実際には2つの要素を次々に配置するというものです。あなたはそれらを容器に入れる必要があります。

最近行った赤いアスタリスクの付いた文のサンプルコード:

<StackPanel  Orientation="Horizontal" Margin="5" >
            <TextBlock Text="Display name"/>
            <TextBlock Text="*" Foreground="Red" FontWeight="Bold" />
            <TextBlock Text=":"/>
        </StackPanel>

ここでは、すべてがに含まれているStackPanelため、プロパティ'content'は実際には1回設定されます(このようなグループパネルを指定しない場合は、要素を1つだけ追加する必要があります)。

于 2011-04-14T15:38:00.407 に答える