【发布时间】:2013-11-05 22:52:02
【问题描述】:
我将一个名为 ScaleFactor 的 ObservableCollection 绑定到一个 ComboBox。 ObservableCollection 的值只是 1、2、4 和 8。我想使用 IValueConverter 将这些值更改为 x1、x2、x4 和 x8。
我的 MainWindow.xaml
<Window x:Class="TimeLineCanvas.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:timeline="clr-namespace:TimeLineCanvas.UserControls"
xmlns:helper="clr-namespace:TimeLineCanvas.Helpers"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.Resources>
<helper:ZoomConverter x:Key="ZoomConverter" />
</Grid.Resources>
<StackPanel>
<ComboBox ItemsSource="{Binding SSS}" HorizontalAlignment="Left" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding, Converter={StaticResource ZoomConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</Grid>
</Window>
以及背后的代码
using System;
using System.Windows;
using System.ComponentModel;
using System.Collections.ObjectModel;
namespace TimeLineCanvas
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
#region Constructors
public MainWindow()
{
InitializeComponent();
SSS = new ObservableCollection<int>();
SSS.Add(1);
SSS.Add(2);
this.DataContext = this;
}
#endregion
public ObservableCollection<int> SSS { get; set; }
}
}
还有转换器
using System;
using System.Windows.Data;
namespace TimeLineCanvas.Helpers
{
public class ZoomConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return "x" + value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
我不知道这是为什么,我没有使用 MarkupExtensions 所以我不认为this link helps。任何人都可以提供任何启示吗?
【问题讨论】:
-
您绑定到
ScaleFactor,这意味着这是单数。是 IEnumerable 类型的吗? -
我更新了我的评论,但我正在使用 public ObservableCollection
ScaleFactor { get;放; } - 总是有 4 个项目 -
我看不出你所拥有的有什么问题。尝试做...
{Binding ., Converter(点然后是逗号) -
@gleng,谢谢,但是,同样的问题仍然存在。
-
呸,我唯一可能看到的错误是转换器未在 ComboBox 的范围内定义(很难通过您发布的代码的对齐方式来判断)。可能想在
中定义它,看看是否有任何改变。