相关疑难解决方法(0)

在组合框中使用转换器绑定项目

我有一个组合框,它绑定到数据表列,如下所示:

ComboBox.DataContext = DataDataTable;                
ComboBox.DisplayMemberPath = DataDataTable.Columns["IDNr"].ToString();
Run Code Online (Sandbox Code Playgroud)

列中的IDNr始终以4个字母开头,后跟ID号(例如BLXF1234).我需要在没有字母的情况下在Combobox中显示项目(我需要在组合框中显示1234).

所以我写了一个转换器:

class IDPrefixValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value != null)
        {
            string s = value.ToString();
            if (s.Contains("BL"))
            {
                return s.Substring(4);
            }
            else
            {
                return s;
            }
        }
        return "";
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotSupportedException();
    }       
Run Code Online (Sandbox Code Playgroud)

不,我怎么能告诉组合框使用转换器来显示项目?我在Xaml中试过这个:

ItemsSource="{Binding}" 
DisplayMemberPath="{Binding Converter={StaticResource IDPrefixValueConverter}}"
Run Code Online (Sandbox Code Playgroud)

但仍然没有工作...任何想法?谢谢

c# wpf xaml converter

30
推荐指数
1
解决办法
2万
查看次数

WPF转换器可以访问绑定到的控件吗?

加长版:与日期转换相比,我有一个简单的WPF转换器。转换器基本上检查日期并将其格式化为dd / M / yyyy格式。转换器会巧妙地处理日期,这意味着用户可以键入“ 23061971”,并且该值将转换为“ 23/06/1971”。

所有这些都是微不足道的,而且有效。问题是,当我更新该值时,它不会更新插入符号的位置。假设“ |” 是插入符号,用户键入“ 23061971 |” 然后在一毫秒后将其更新为“ 230619 | 71”。

我想做的是检测插入符号是否位于值的末尾-如果是,请在新值更新后将其移至编辑字段的末尾。为此,我将需要访问附加转换器的编辑控件。

简短版:我可以从WPF转换器中获取绑定到该转换器的控件的引用吗?

wpf binding

5
推荐指数
2
解决办法
3257
查看次数

标签 统计

wpf ×2

binding ×1

c# ×1

converter ×1

xaml ×1