首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF:ComboBox显示"(namespace).(classname)"而不是数据

在WPF中,ComboBox可以显示"(namespace).(classname)"而不是数据。这是因为ComboBox默认使用对象的ToString()方法来显示数据,而如果没有重写ToString()方法,它将显示对象的类型名称,格式为"(namespace).(classname)"。

要解决这个问题,可以通过设置ComboBox的ItemTemplate来自定义显示的内容。ItemTemplate可以使用DataTemplate来定义显示的内容,可以绑定到数据对象的属性上,从而显示数据的特定属性。

例如,如果数据对象是一个名为"MyData"的类,其中有一个名为"DisplayName"的属性,可以使用以下代码来设置ComboBox的ItemTemplate:

代码语言:csharp<ComboBox ItemsSource="{Binding MyDataList}">
复制
   <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding DisplayName}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

这将使ComboBox显示"MyData"对象的"DisplayName"属性的值,而不是默认的"(namespace).(classname)"格式。

如果数据对象没有合适的属性可以绑定到,可以使用多级属性绑定,例如:

代码语言:csharp<ComboBox ItemsSource="{Binding MyDataList}">
复制
   <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding SubData.DisplayName}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

这将使ComboBox显示"MyData"对象的"SubData"属性中的"DisplayName"属性的值。

总之,如果ComboBox显示的是"(namespace).(classname)"而不是数据,可以通过设置ItemTemplate来自定义显示的内容,从而解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

win10 uwp 如何使用DataTemplate 转换绑定Event到Command绑定 ObservableCollectionDataTemplate 绑定 ViewM

这是数据模板,一般用在数组的绑定,显示数组中的元素。 假如我们有一个列表,列表里是书,包括书名、作者、还有出版,那么我们只有源信息,如何把它显示到我们的ListView,就需要DataTemplate。 使用很简单,我们可以定义在资源,也可以定义在ItemTemplate。 数据模板有绑定的问题。 我们使用Binding和WPF其实没有多少不同,在Mode只有OneWay,OneTime,TwoWay。我们使用的x:bind在DataTemplate才和原来有一些不同。 我们使用x:bind需要我们对我们数据的类型,这个在前没有,我开始不知,弄了好久,最后才知道,还有一个,UWP默认是OneTime,也就是绑定只有一次。

02
领券