2

私はWPFを初めて使用するので、ご容赦ください。WPFウィンドウにComboBoxがあり、ItemSourceプロパティは文字列のリストプロパティ(Countries)にバインドされ、SelectedItemは文字列プロパティ(SelectedCountry)にバインドされています。これらのプロパティは両方ともコードビハインドにあり、DataContextを「this」(つまりウィンドウ)に設定しています。

ComboBoxxamlは次のとおりです。

<ComboBox Name="CountryComboBox" 
    VerticalAlignment="Center" 
    Width="200"
    ItemsSource="{Binding Path=Countries, Mode=OneTime}"
    SelectedItem="{Binding Path=SelectedCountry, Mode=TwoWay}">
</ComboBox>

アイテムが選択されていないときに表示されるデフォルトの「-選択してください-」オプションが必要だったので、次のxamlをApp.xamlに配置しました。

<Style TargetType="ComboBox">
    <Style.Triggers>
        <Trigger Property="SelectedItem" Value="{x:Null}">
            <Setter Property="IsEditable" Value="true" />
            <Setter Property="IsReadOnly" Value="true" />
            <Setter Property="Text" Value="- Please Select -" />
        </Trigger>
    </Style.Triggers>
</Style>

ウィンドウが最初に表示されたとき、コンボボックスには期待どおりに「-選択してください-」というテキストが表示されます。次にコンボボックスで値を選択すると、SelectedCountryが適切に入力されますが、SelectedCountryプロパティに「null」を割り当てると、「-選択してください」に戻ると予想される場合でも、コンボボックスには同じ選択された国があります。 -"。私は何が間違っているのですか?

ありがとう。

4

2 に答える 2

4

を変更せず、がnullの場合はComboBox単に上にオーバーレイする方がよい場合があります。TextBlockComboBoxSelectedItem

ComboBoxとaをaでラップし、TextBlockにaGridを設定しDataTriggerて、がnullTextBlockかどうかを確認し、SelectedItemVisibility

例:

    <Grid> 
        <ComboBox x:Name="combo" ItemsSource="{Binding Countries}" SelectedItem="{Binding SelectedItem}" />
        <TextBlock x:Name="textblock" Text="- Please Select -" Margin="5,3,0,0" IsHitTestVisible="False">
            <TextBlock.Style>
             <Style TargetType="TextBlock">
                    <Setter Property="Visibility" Value="Hidden" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding SelectedItem,ElementName=combo}" Value="{x:Null}">
                            <Setter Property="Visibility" Value="Visible" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBlock.Style>
        </TextBlock>
    </Grid>

結果:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

于 2013-03-15T23:08:24.090 に答える
1

nullの値と「-選択してください-」という名前のレコードを国リストに挿入する必要があります。

または、ComboBoxコントロールを拡張して独自のコントロールを記述し、国の選択にレコードを追加せずにリストでnull値を指定できるようにすることもできます。

しかし、2つのうち、国にレコードを追加する方がはるかに簡単です。

于 2013-03-15T18:17:04.153 に答える