我是WPF的新手。我没有成功将选定的索引\选定值设置为列出图像项目框。
我目前的代码是:
关于xaml:
<ListBox Name="symbolSrc" Grid.Row="1" Width="485" Height="100" HorizontalAlignment="Left" Margin="7,-35,0,0" ItemTemplate="{StaticResource cmbTemplate}" IsSynchronizedWithCurrentItem="True" SelectedValuePath="photo">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="6 0 0 0" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemsSource>
<MultiBinding Converter="{StaticResource SymbolComboboxItemsFilter}">
<Binding ElementName ="RadioButLR" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName ="RadioButHR" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</ListBox.ItemsSource>
<ListBox.SelectedValue>
<MultiBinding Converter="{StaticResource SymbolComboboxSelectedItem}">
<Binding ElementName ="RadioButLR" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName ="RadioButHR" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</ListBox.SelectedValue>
</ListBox>
在xaml.cs上:
public class SymbolComboboxItemsFilterConverter: IMultiValueConverter
{
public class symbolCmbBoxItem
{
public string photo { get; set; }
public string photoName { get; set; }
}
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
List<symbolCmbBoxItem> itemsList = new List<symbolCmbBoxItem>();
string targetDir = System.Windows.Forms.Application.ExecutablePath + "\\..\\..\\..\\INIT\\IC";
string[] filesArray = Directory.GetFiles(targetDir, "*", SearchOption.TopDirectoryOnly);
if ((bool)values[0])
{
foreach (string file in filesArray.Where(s => s.Contains("_LR")))
{
itemsList.Add(new symbolCmbBoxItem { photo = file, photoName = "" });
}
}
else
{
foreach (string file in filesArray.Where(s => s.Contains("_HR")))
{
itemsList.Add(new symbolCmbBoxItem { photo = file, photoName = "" });
}
}
return itemsList;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
public class SymbolComboboxItemsSelectedIndex : IMultiValueConverter
{
public class symbolCmbBoxItem
{
public string photo { get; set; }
public string photoName { get; set; }
}
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
List<symbolCmbBoxItem> itemsList = new List<symbolCmbBoxItem>();
string targetDir = System.Windows.Forms.Application.ExecutablePath + "\\..\\..\\..\\INIT\\IC";
string[] filesArray = Directory.GetFiles(targetDir, "*", SearchOption.TopDirectoryOnly);
if ((bool)values[0])
{
string item = filesArray.Where(s => s.Contains("_LR")).First();
return new symbolCmbBoxItem { photo = item, photoName = "" };
}
else
{
string item = filesArray.Where(s => s.Contains("_HR")).First();
return new symbolCmbBoxItem { photo = item, photoName = "" };
}
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
我还尝试使用以下方法设置所选项目:
的SelectedItem =&#34; 1&#34;
它没有用。
还尝试在上面使用相同的多转换器,并始终将所选项目设置为&#34; 1&#34;它也没有用。
(为了设置我在下面参考时使用的图像列表框:
http://www.codescratcher.com/wpf/wpf-combobox-with-image/)
有什么想法吗?
非常感谢您的帮助!