![](/img/trans.png)
[英]Default template for ComboBox: How does IsEditable switch TextBox and Contentpresenter
[英]UWP ComboBox IsEditable does not work right
这是我的代码,组合框控件包含文本和图像:
XAML 代码:
<ComboBox Name="cb1"
VerticalAlignment="Center" HorizontalAlignment="Center"
Header="Abcd"
IsEditable="True"
Margin="5"
Width="120">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Icon}" Width="20" Height="20" Margin="5,0,10,0"/>
<TextBlock Text="{Binding Text}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
C# 代码:
public sealed partial class SamplePage2 : Page
{
public SamplePage2()
{
InitializeComponent();
cb1.Items.Add(new Model
{
Icon = new BitmapImage(new Uri("ms-appx:///Assets/Images/mecca.png")),
Text = "بقره"
});
cb1.Items.Add(new Model
{
Icon = new BitmapImage(new Uri("ms-appx:///Assets/Images/medina.png")),
Text = "فاتحه"
});
cb1.SelectedIndex = 0;
}
class Model
{
public BitmapImage Icon { get; set; }
public string Text { get; set; }
}
}
但是,当我单击指针按钮或单击文本内部时...,请参阅此图像:
我该如何解决这个问题?
注意:我需要“IsEditable”功能[因为我希望用户通过编写文本快速达到所需的选项。 ]
UWP ComboBox IsEditable 无法正常工作
问题是显示成员是 model class,所以它不能编辑,对于您的场景,我们建议您将字符串集合作为 ComboBox 数据源。 然后我们图像转换器根据项目的内容设置图像源。 有关更多信息,请参阅此案例回复。
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image
Width="22"
Height="22"
Source="{Binding Converter={StaticResource ImageConverter}}"
/>
<TextBlock
Margin="10"
Text="{Binding}"
TextAlignment="Center"
/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
MyComboBox.ItemsSource = new List<string>() { "Red", "Green", "Blue" };
}
图像转换器
public class ImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
string resaut = string.Empty;
switch (value.ToString())
{
case "Blue":
resaut = "ms-appx:///Assets/BlueImage.png";
break;
case "Green":
resaut = "ms-appx:///Assets/GreenImage.png";
break;
case "Red":
resaut = "ms-appx:///Assets/RedImage.png";
break;
default:
break;
}
return resaut;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.