首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在WPF页面加载的组合框中显示默认文本"--Select Team --“?

如何在WPF页面加载的组合框中显示默认文本"--Select Team --“?
EN

Stack Overflow用户
提问于 2009-09-15 09:08:25
回答 23查看 172K关注 0票数 122

在WPF应用程序中,在MVP应用程序中,我有一个组合框,用于显示从数据库获取的数据。在将项目添加到组合框之前,我希望显示默认文本,例如

“--选择团队--”

因此,在页面加载时,它会显示,在选择它时,文本应该被清除,项目应该显示。

正在从数据库中选择数据。我需要显示默认文本,直到用户从组合框中选择一项。

请给我指引

EN

回答 23

Stack Overflow用户

回答已采纳

发布于 2012-07-26 22:50:44

我找到的最简单的方法是:

代码语言:javascript
复制
<ComboBox Name="MyComboBox"
 IsEditable="True"
 IsReadOnly="True"
 Text="-- Select Team --" />

您显然需要添加其他选项,但这可能是最简单的方法。

然而,这种方法有一个缺点,那就是虽然组合框中的文本将不能编辑,但它仍然是可选的。然而,考虑到到目前为止我发现的每一个替代方案的质量和复杂性都很差,这可能是最好的选择。

票数 119
EN

Stack Overflow用户

发布于 2010-04-03 09:06:09

通过使用IValueConverter,您可以在没有任何代码的情况下完成此操作。

代码语言:javascript
复制
<Grid>
   <ComboBox
       x:Name="comboBox1"
       ItemsSource="{Binding MyItemSource}"  />
   <TextBlock
       Visibility="{Binding SelectedItem, ElementName=comboBox1, Converter={StaticResource NullToVisibilityConverter}}"
       IsHitTestVisible="False"
       Text="... Select Team ..." />
</Grid>

这里有一个您可以重用的转换器类。

代码语言:javascript
复制
public class NullToVisibilityConverter : IValueConverter
{
    #region Implementation of IValueConverter

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value == null ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

最后,您需要在资源部分中声明您的转换器。

代码语言:javascript
复制
<Converters:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />

其中Converters是放置converter类的位置。下面是一个例子:

代码语言:javascript
复制
xmlns:Converters="clr-namespace:MyProject.Resources.Converters"

这种方法非常好的一点是在你的代码中没有重复的代码。

票数 94
EN

Stack Overflow用户

发布于 2010-10-29 23:32:06

我喜欢Tri Q的答案,但这些值转换器使用起来很痛苦。PaulB使用事件处理程序实现了这一点,但这也是不必要的。这是一个纯XAML解决方案:

代码语言:javascript
复制
<ContentControl Content="{Binding YourChoices}">
    <ContentControl.ContentTemplate>
        <DataTemplate>
            <Grid>
                <ComboBox x:Name="cb" ItemsSource="{Binding}"/>
                <TextBlock x:Name="tb" Text="Select Something" IsHitTestVisible="False" Visibility="Hidden"/>
            </Grid>
            <DataTemplate.Triggers>
                <Trigger SourceName="cb" Property="SelectedItem" Value="{x:Null}">
                    <Setter TargetName="tb" Property="Visibility" Value="Visible"/>
                </Trigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </ContentControl.ContentTemplate> 
</ContentControl>
票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1426050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档