0

ItemSource がタイプの ObservableCollection(つまり ConversationList) である Combobox を使用しています。

<ComboBox x:Name="ConvId"
                  Grid.Row="2"
                  Width="75"
                  Height="23"
                  Margin="6,94,0,0"
                  HorizontalAlignment="Left"
                  VerticalAlignment="Top"
                  ItemsSource="{Binding ConversationList,
                                        UpdateSourceTrigger=PropertyChanged}"
                  SelectedItem="{Binding SelectedId,
                                         Mode=TwoWay}">

私の要件は次のとおりです。コレクションにint値がない場合、コンボボックスの左側にここに画像の説明を入力文字列である「ConvId」を表示する必要があります。図を以下に示します

コレクションを int から文字列に変換し、'ConvId' を 0 番目の場所に置き、SelectedIndex= 0 をマークするという回避策がありますが、それは望ましくありません。これにはカスタム コントロールを使用する必要がありますか。XAMLでこれを達成する方法はありますか?

4

3 に答える 3

0

John Myczek による WatermarkService をご覧くださいComboBox で項目が選択されていない場合は、デフォルトの文字列を表示できます。私がリンクした回答には ComboBox に関するいくつかの問題がありますが、さらに下を見ると、その修正があります。

于 2012-10-09T06:31:08.360 に答える
0

この Stack スレッドは、Converter を使用して必要なことをきれいに行うようです。 WPFのページロード時にコンボボックスにデフォルトのテキスト「--Select Team --」を表示する方法は?

私が言及している答えはこれで始まります:

<Grid>
    <ComboBox
        x:Name="comboBox1"
        ItemsSource="{Binding MyItemSource}"  />
    <TextBlock
        Visibility="{Binding SelectedItem, ElementName=comboBox1, Converter={StaticResource NullToVisibilityConverter}}"
        IsHitTestVisible="False"
        Text="... Select Team ..." />
</Grid>
于 2012-10-08T12:38:54.360 に答える
0

コンボボックスの下にテキストブロックを置き、コンボボックスとテキストブロックの両方が互いに重なっている (つまり、同じグリッド行にある必要がある) ことを確認します。

<TextBlock Text="ConvID"
           IsHitTestVisible="False">
                <TextBlock.Style>
                    <Style
                            TargetType="TextBlock">
                        <Setter
                                Property="Visibility"
                                Value="Collapsed" />
                        <Style.Triggers>
                            <DataTrigger
                                    Binding="{Binding ConversationList.Count}"
                                    Value="0">
                                <Setter
                                        Property="Visibility"
                                        Value="Visible" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBlock.Style>
                </TextBlock>

お役に立てれば。

于 2012-10-08T12:46:43.117 に答える