web-dev-qa-db-ja.com

WPF Combobox DefaultValue(選択してください)

こんにちは、列挙型のリストを表示するWPFコンボボックスがあります。コードは以下です。

    <ComboBox HorizontalAlignment="Left" 
              Margin="139,299,0,0" 
              VerticalAlignment="Top" 
              ItemsSource="{Binding Source={StaticResource Enum}}"
              Width="78"/> 

ただし、ビューが読み込まれると、リストの最初の列挙型が表示されますが、「選択してください」と表示したいので、これを行うXAMLがあります(必要に応じてビューのC#があります)。

ありがとう

24
user3428422

提供されたすべての良い答えですが、私は私の問題を解決するために以下を使用しました

<ComboBox SelectedIndex="0">
    <ComboBox.ItemsSource>
        <CompositeCollection>
            <ListBoxItem>Please Select</ListBoxItem>
            <CollectionContainer Collection="{Binding Source={StaticResource YOURDATASOURCE}}" />
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>

助けてくれたみんなありがとう!

37
user3428422

これらのプロパティをコンボボックスに追加すると、コンボボックスにデフォルトの「選択してください」テキストを設定できます。

<ComboBox IsEditable="True" IsReadOnly="True" Text="Please Select"/>

より汎用性の高いソリューションのために、コンボボックスに透かしを作成できます

17
Krishna

私は静的なアイテムを持っているので、私と一緒にこれを行いました。

<ComboBox Name="cbxType" HorizontalAlignment="Left" Margin="116,41,0,0" VerticalAlignment="Top" Width="192">
    <ComboBoxItem Name="create" IsSelected="True">create database</ComboBoxItem>
    <ComboBoxItem Name="update">update database</ComboBoxItem>
</ComboBox>
9
MelloG

次のコードでそれを達成できます。

<Grid>
                <ComboBox
                    MinWidth="120"
                    x:Name="MyCombo"
                    ItemsSource="{Binding FileTypes}"  
                    SelectedItem="{Binding SelectedFileType}"/>
                <TextBlock
                    VerticalAlignment="Center"
                    HorizontalAlignment="Center"
                    Visibility="{Binding SelectedItem, ElementName=MyCombo, Converter={StaticResource NullToVisibilityConverter}}"
                    IsHitTestVisible="False"
                    Text="Select Option...  " />
</Grid>

上記のテキスト(テキストボックス)が必要なときはいつでも、VisibilityConverterを使用してコンボボックスの上にテキストを表示できます...

リソースに次のようなものを追加します。

<local:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
8
AP_TheMoe

「Please select」という値をEnumCollectionに追加します

コンボボックススタイルセッターでデフォルト値を設定します

<Style x:Key="ComboStyle" TargetType="{x:Type ComboBox}">
    <Setter Property="SelectedIndex" Value="0"/>
</Style>

XAML:

<ComboBox HorizontalAlignment="Left" 
              Margin="139,299,0,0" 
              Style="{StaticResource ComboStyle}"
              VerticalAlignment="Top" 
              ItemsSource="{Binding Source={StaticResource ComboBox}}"
              Width="78"/> 
2

コードビハインドなしでそれを行う方法がわからない、おそらくいくつかのトリガーまたはDataTemplateSelectors ...?

コードビハインドで:

  1. 「選択してください」という1つの文字列のみを含む列挙可能な文字列プロパティを追加します。
  2. XAMLでは、ItemsSourceをそのプロパティに設定し、SelectedIndex = 0
  3. DropDownOpenedイベントセットComboBox.ItemsSource Enumコレクションへ
1
amnezjak

コントロールがWPFウィンドウ/ユーザーコントロールで最初にロード/初期化されるときに、ComboBoxのデフォルト値を「SELL」に設定します。

<ComboBox x:Name="OrderType" 
          Width="100" Height="20"
          SelectedIndex="1">
         <ComboBoxItem Content="BUY"/>
         <ComboBoxItem Content="SELL"/> 
</ComboBox>
1
Bo Jangles