标签: valueconverter

如何使用codebehind变量作为ValueConverter中ConverterParameter的输入

我有一个ListBox,我将ItemsSource设置为从WCF服务填充的CollectionViewSource.我在ListBox.ItemTemplate\DataTemplate中使用值转换器来转换ItemsSource中对象的属性.

这一切都按预期工作,但现在我需要更新转换过程,以便转换后的值仍然基于单个对象属性值,除非另一个属性等于特定值.并且该值在xaml后面的代码中设置,这是在页面构造函数中设置的字段级变量.

为此,我想将字段级变量作为ValueConverter的ConverterParameter传递.我已经尝试了几种方法,主要使用这个问题的想法,除了我总是得到一个错误解析xaml(并且应用程序无法加载).

一个修复可能是添加属性到ItemsSource中的对象,但我真的不想这样做.部分是因为该对象在几个项目中使用,所以我不想改变我......因为我想看看其他方法是否可行.另外我相信wpf有一个MultiValue转换器(也许是SL 4.0),但我在SL 3.0上.

我的猜测是到目前为止我遇到的问题是因为加载,绑定和解析xaml的时间.

所以有几个问题:

  • 这可以像我上面描述的那样完成吗?
  • 如果不是什么问题?
  • 如果不是没有为对象添加属性的另一种方式?

data-binding silverlight silverlight-3.0 valueconverter

3
推荐指数
1
解决办法
1550
查看次数

将年份字符串即'2005'转换为Datetime值

我正在创建一个简单的输入表单来创建一个帐户.在表单上有一个公司成立年份的输入字段,这是一个简单的文本框,用户将输入年份,即2005年.

但是,在尝试将此插入到数据库字段(即datetime)时,尽管将文本框条目转换为datetime,但仍会引发错误...

myCompanyAccount.Founded = Convert.ToDateTime(this.TxtCompanyFounded.Text);
Run Code Online (Sandbox Code Playgroud)

有没有办法可以将一年的输入(即2005年)转换为日期时间,以便将其插入数据库......?提前致谢!

c# asp.net datetime valueconverter

3
推荐指数
2
解决办法
5135
查看次数

在C#中,为什么此转换导致"输入字符串格式不正确".错误?

我有代码读取一个数字(但作为一个字符串),我试图将其转换为一个字节.

通常值在0和1之间(如.25),我的代码工作正常,但我现在遇到一个负值,特别是"-1",并试图弄清楚为什么这个代码正在爆炸:

 public static byte GetByteVal(DataRow dataRow, string caption)
    {
        var val = dataRow.GetValue(caption).ToString().Trim();

        if (!String.IsNullOrEmpty(val))
        {
            decimal convertedVal = Decimal.Parse(val, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint) * 100;

            if (convertedVal >= 0)
            {
                return (byte)(convertedVal);
            }
            else
            {
                return (byte)0;
            }
        }
        return (byte)0;
    }
Run Code Online (Sandbox Code Playgroud)

当"val"变量以"-1"形式出现时,我在这一行得到一个例外:

  decimal convertedVal = Decimal.Parse(val, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint) * 100;
Run Code Online (Sandbox Code Playgroud)

说的是:

Input string was not in a correct format.
Run Code Online (Sandbox Code Playgroud)

c# decimal type-conversion valueconverter

3
推荐指数
1
解决办法
605
查看次数

您的ViewModel是否应将XAML元素作为属性公开?

在StackOverflow问题上如何在MVVM模式中使用WPF转换器?我已经知道值转换器不应该在MVVM模式中使用,因为值转换器功能应该由ViewModel本身处理.

这是有道理的.

但我记得读过你不应该将XAML元素暴露给View,而是只暴露View然后使用DataTemplates绑定和显示的数据集合.

但是,转换器似乎非常强大(例如,它们在MVVM模板演示中使用,在解压缩后看到"Messenger示例"),因为它们可以将对象转换为对象,例如将Message对象转换为FlowDocument对象,或将Customer对象转换为Visibility对象或自定义状态对象到图像等

因此,如果ViewModel将采用Value Converter的功能,它将不得不公开XAML元素和属性,如StackPanel,Visibility,Color,FlowDocument等,对吧?

有谁看到任何理由为什么ViewModel不应该像值转换器那样公开这些丰富的XAML对象?

silverlight wpf xaml mvvm valueconverter

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

WPF绑定到另一个属性的样式绑定

我不确定提出这个问题的最佳方式(对于含糊不清的问题标题感到抱歉),但实际上我想使用从数据上下文传递属性的值转换器在TextBox上设置MaxLength属性,和传入属性的属性作为转换器参数.我希望以一种风格来做所有这些,而不是逐个控制.以下是以非样式方式执行此操作的示例:

<TextBox Text="{Binding MyPropertyName.TheirPropertyName}" MaxLength="{Binding MyPropertyName, Converter={StatocRespirceMyCoolConverter}, ConverterParameter=TheirPropertyName}" />
Run Code Online (Sandbox Code Playgroud)

(如果您想知道,ItsPropertyName表示MyPropertyName类型的属性,它具有[StringMaxLength(15)]等属性,我可以在值转换器中找到并返回.)此外,是否有传递MyPropertyName类型而不是实例的任何方式?我只需要类型来执行StringMaxLength属性查找.

无论如何,我怎么能在风格上做这样的事情呢?我已经达到了:

<Setter Property="MaxLength">
    <Setter.Value>
        <Binding Converter="{StaticResource textFieldMaxLengthConverter}" />
    </Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)

但是这会将整个datacontext传递给值转换器,而不是MyPropertyName对象,我真的不知道如果我可以解析MyPropertyName.TheirPropertyName部分绑定以在绑定的ConverterParameter属性上传递ItsPropertyName .

任何指导都会非常感激!

data-binding wpf xaml styles valueconverter

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

将chars中的float转换为float(PYTHON)

我在python中有一个程序,我希望在其中接收带有一些值的框架.该值由xbee发送.

Xbee发送一个由union结构分成4个字节的浮点数,如下所示:

typedef union _data{
    float f;
    char s[4];
} myFloat;
Run Code Online (Sandbox Code Playgroud)

所以例如,17.23给了我10,-41,-119,65.所以,我必须在python中恢复所有这些值,在我得到4之后,将它们转换成浮点数.自从我读取每个(serial.read())以获得浮点结果后,我该怎么办?

这些值将由python脚本接收,我想再次将它们加入浮点数.我在python中读到了关于struct的内容但是我不是很好的python技巧,我不明白它是如何工作的.

我使用serial.read逐个读取字节.

任何的想法?

python floating-point byte valueconverter

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

如何在资源字典中使用参考转换器

我创建了一个多绑定转换器(ListItemDescriptionConverter),它将多个值组合到一个字符串中,作为ListBox项目的输出。但是我不知道如何获取资源字典以指向单独的.cs文件中的转换器类。当我使用以下标记时找不到它:

            <TextBlock Style="{StaticResource BasicTextStyle}">
                <TextBlock.Text>
                    <MultiBinding Converter="StaticResource {ListItemDescriptionConverter}">
                        <Binding Path="Genres"></Binding>
                        <Binding Path="Year"></Binding>
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
Run Code Online (Sandbox Code Playgroud)

我必须在资源字典中做其他事情来访问转换器类吗?我无法在其中添加引用,Window.Resources因为它需要在资源字典中,因此我可以在整个应用程序中重用该样式。

wpf valueconverter c#-4.0

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

何时在mvvm应用程序中使用值转换器?

如果使用MVVM设计模式实现WPF应用程序,是否存在使用值转换器的任何情况?在我看来,值转换器与视图模型完全相同,即为视图准备数据.

那么,价值转换器有一些很好的用途吗?


诚挚的问候Oliver Hanappi

.net wpf mvvm valueconverter

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

使用StringFormat和大写转换器绑定表达式?

我有一个TextBlock文本绑定生活自动收报机(通过System.Date.Now),该绑定包含一个ValueConverter应该将字符串转换为大写的.但是,字符串不会产生大写字母(结果就好像转换器不在那里).如何将绑定结果设为大写?

<TextBlock 
        Text="{Binding Now,
                       Source={StaticResource ticker},  
                       StringFormat={}{0:dddd\, MMMM d}, 
                       Converter={StaticResource CaseConverter}}" />
Run Code Online (Sandbox Code Playgroud)

data-binding wpf string-formatting valueconverter

1
推荐指数
1
解决办法
5366
查看次数

我使用值转换器时如何更新视图模型的属性?

我有一个textBox,我使用值转换器来设置text属性,因为这个值取决于datagrid的selección.所以我使用这段代码:

<TextBox Height="23" HorizontalAlignment="Stretch" Margin="5,26,0,0" Name="myTxt" VerticalAlignment="Top"
                 Text="{Binding ElementName=Principal, Path=DataContext.OneProperty, Converter={StaticResource myConverter}}">
Run Code Online (Sandbox Code Playgroud)

Normallt我用这种方式:

Text="{Binding myProperty}"
Run Code Online (Sandbox Code Playgroud)

但在这种情况下我需要一个转换器,但我想更新dataContext中的属性.

这是可能的,或者如果我使用转换器,我无法更新dataContext中的属性?

谢谢.

编辑:

我试着变得有点清醒.

我有一个有TextBox的视图.我想根据转换器设置此textBox.此转换器在视图模型中使用名为myDataGridSelectedItems的属性.但是我在视图模型中有一个名为myTextBox的其他属性,当textBox使用从converver接收的值更新其值时,我想要更新它.

所以我想将视图的Text属性绑定到视图模型中的两个属性.

wpf mvvm valueconverter

0
推荐指数
1
解决办法
300
查看次数