我对WPF很新。我遇到了ComboBox的问题
<ComboBox Grid.Column="2" Grid.Row="5" x:Name="ddlLocation" ItemsSource="{Binding Users.Locations}" Text="<None Selected>" IsEditable="True" IsReadOnly="True" SelectedValue="{Binding Users.SelectedUser.Location}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Path="Name" />
<Binding Path="ShortName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
<!--<ComboBox.SelectionBoxItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Path="Name" />
<Binding Path="ShortName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.SelectionBoxItemTemplate>-->
</ComboBox>
如果我这样做,我会在选择框中输入typename。看起来我应该能够使用SelectionBoxItemTemplate,但它告诉我SelectionBoxItemTemplate没有可访问的setter。你会怎么做?
答案 0 :(得分:1)
看起来这是我建议删除IsEditable="True"
的结果,因为您还有IsReadOnly="True"
关于Text
属性 - 当没有选择任何内容时的默认值...我会把它放在那里,但我希望有人有更好的解决方案...我没有看到任何东西快速浏览一下。
包含命名空间
xmlns:conv="clr-namespace:StackOverflow.Converters"
一些xaml
<ComboBox ... IsEditable="{Binding SelectedItem, RelativeSource={RelativeSource Self}, Converter={StaticResource NullBoolConverter}, FallbackValue=False}">
<ComboBox.Resources>
<conv:NullBoolConverter x:Key="NullBoolConverter" />
</ComboBox.Resources>
转换器类
namespace StackOverflow.Converters
{
class NullBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value == null;
}
....
}
}