标签: ivalueconverter

在类库项目中实现IValueConverter

我有一个大约12个项目的解决方案,一个被设置为启动项目,其中包含主窗口.目前我IValueConverter的所有人都在这个项目中.

我现在想把它们转移到一个只包含转换器的单独项目中.这样我就可以在所有项目中重用它们,而不仅仅是主窗口.

  • 我创建了一个新项目(类库)
  • 我已经导入了WindowsBase
  • 我已经包含对System.Windows.Data的引用
  • 我正在使用Visual Studio 2010 Express与.NET 4

我收到错误:

"错误3找不到类型或命名空间名称'IValueConverter'(您是否缺少using指令或程序集引用?) "

c# wpf ivalueconverter

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

使用iValueConverter格式化TextBlock文本的一部分

我想将文本块的一部分粗体化.这是我在IValueConverter中尝试但它似乎不起作用.

public class Highlighter : IValueConverter
    {


        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null)
            {
                return null;
            }

            return "Question1:<Bold>Answer1</Bold>, Question2:<Bold>Answer2</Bold>, Question3:<Bold>Answer3</Bold>";

        }

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

这不会使答案变得大胆.

这就是我在XAML中使用它的方式.

<TextBlock Height="Auto" Width="Auto" MaxHeight="64" Text="{Binding Path=QuestionAnswer, Mode=OneWay, Converter={x:Static Highlighter}}" />
Run Code Online (Sandbox Code Playgroud)

有没有办法通过格式化文本或将TextBlock发送到转换器来实现这一目标?

wpf ivalueconverter

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

将值传递给IValueConverter

我有一个ListViewGrid两列和多行.每一行在每列中都有一个绑定到ListView中的值的TextBlock每个Text属性ItemSource.我需要TextBlock根据第一个中的值对第二个文本进行一些转换TextBlock.如何将第一个文本框的值输入转换器?

这是我到目前为止:

XAML:

<UserControl.Resources>
    <local:ValueStringConverter x:Key="valueStringConverter" />
</UserControl.Resources>

<ListView Name="theListView" ItemsSource="{Binding ItemCollection}" SelectedItem="{Binding SelectedItem}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Grid.Row="1" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>

                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>

                <TextBlock Text="{Binding Path=Key}" Grid.Column="0" Margin="0,0,10,0" />
                <TextBlock Text="{Binding Path=Value, Converter={StaticResource valueStringConverter}}" TextWrapping="Wrap" Grid.Column="1" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)

代码ValueStringConverter:

public class ValueStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, …
Run Code Online (Sandbox Code Playgroud)

c# wpf listview mvvm ivalueconverter

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

WPF:如果转换器的属性发生更改,有什么方法可以强制转换器更新吗?

简介: 这是我在应用程序中使用的翻译器的一部分。当我使用组合框更改语言时,我想更新其中的所有字符串。

问题: 当我的转换器属性发生更改时,我想更新标签内容。是否可以?如果我更改 CurrentLanguage,这种方式(我的制作方法)不会更新内容。

 <Label
      ID:Name="CompanyName"
      Content="{Binding ElementName=CompanyName, Path=Name, Converter={ID:Static Controller:Translator.Instance}}" />
Run Code Online (Sandbox Code Playgroud)

这个组合框改变了我的当前值 -有效

 <ComboBox
        SelectedItem="{Binding Path=CurrentLanguage, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Converter={StaticResource FlagConverter}}">
Run Code Online (Sandbox Code Playgroud)

翻译器代码背后 -有效(PropertyChanged 被解雇)

    public partial class Translator : IValueConverter, INotifyPropertyChanged
    { 
    ...
        private String m_currentLanguage;
        public String CurrentLanguage
        {
            get { return m_currentLanguage; }
            set
            {
                m_currentLanguage = value;
                OnPropertyChanged("CurrentLanguage");
            }
        }

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return Get((String)value); // nonrelevant function - works
        }

        public object ConvertBack(object value, Type …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml inotifypropertychanged ivalueconverter

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

获取项目内ObservableCollection中项目的索引

我希望能够在DataTemplate中显示索引值,但我不希望数据由模型或视图模型保留或支持.换句话说,如果OC中项目的顺序发生变化,我不想重新计算索引.该值应与OC中的基础索引固有关联.如果索引从0开始是可以的(实际上,我希望它).

其他人使用的一种方法是AlternationIndex AP,但这在某些情况下有其自身的缺陷.

最后一个想法:我不禁想到转换器将在最终解决方案中发挥作用.

c# wpf ivalueconverter

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

在 Wpf 和 Xamarin Forms 之间共享 IValueConverter

我正在创建将包含 Wpf 应用程序项目和 Xamarin Forms 移动应用程序的解决方案。我将代码的一些常见部分放入可移植类库中。是否可以创建 ValueConvertes 以便我可以在 Wpf 和 Xamarin 形式中使用它们?

wpf ivalueconverter xamarin.forms

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

WPF IValueConverter - 将多个值转换为单个值

我正在努力维护别人的代码,因为那个人是WPF专家.另一方面,我不是.:)

该代码使用IValueConverter将状态枚举转换为布尔值,该布尔值控制是否在屏幕上显示UserControl.

我发现了一个缺点,即在这种情况下单个枚举是不够的,实际上还需要考虑另一个布尔值.是否有另一个可以使用的对象,它可以将2个项目作为参数进行转换?("converter"参数已被使用.)

一个简单的例子如下.

现有代码的逻辑说......

If it's sunny, go to work.
If it's raining, don't go to work.
Run Code Online (Sandbox Code Playgroud)

我需要考虑另一件事情,如下所示.

If it's sunny and you're wearing pants, go to work.
If it's sunny and you're not wearing pants, don't go to work.
If it's raining and you're wearing pants, don't go to work.
If it's raining and you're not wearing pants, don't go to work.
Run Code Online (Sandbox Code Playgroud)

执行转换的IValueConverter只允许我将一个"东西"用于转换.

任何帮助表示赞赏.谢谢,

MJ

.net c# wpf ivalueconverter

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

WPF切换按钮的IsChecked属性的ValueConverter

我正在尝试编写一个值转换器,以将WPF ToggleButton的Boolean IsChecked属性绑定到模型中的非布尔值(碰巧是双精度)。我编写的convert函数如下所示:

        public object Convert(object value, Type targetType, object paramter, System.Globalization.CultureInfo culutre)
        {
          if (targetType != typeof(Boolean))
            throw new InvalidOperationException("Target type should be Boolean");

          var input = double.Parse(value.ToString());

          return (input==0.0) ? false: true;
        }
Run Code Online (Sandbox Code Playgroud)

问题是,当调用函数时,targetType不是我期望的-它是

            "System.Nullable`1[[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
Run Code Online (Sandbox Code Playgroud)

而不是System.Boolean。这是预期的吗?过去我没有麻烦地写了其他转换器。

data-binding wpf ivalueconverter

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

用于枚举的Combobox转换器

我有一个具有类似值的枚举

HomeRun,StolenBase,FirstBase等

我想在组合框中显示这些值,在大写字母之前插入一个空格,因此它将显示为"Home Run","Stolen Base"等.

我已经有了可以为我做格式化的代码,并且我已将该代码添加到IValueConverter实现的'Convert'方法中.

我的问题是,我在哪里需要使用这个转换器(在xaml中),这样不仅下拉列表,而且显示的值,将具有这种格式?我是否还需要实现ConvertBack?

我很清楚为枚举设置'描述'并使用流行的EnumToDescriptionConverter,但我宁愿远离它.

.net c# wpf enums ivalueconverter

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

如何以及在简单XAML窗口中为转换器创建StaticResource密钥的位置?

我有一个简单的WPF XAML窗口,我需要在以下XAML中创建一个StaticResource密钥。

XAML源代码是

<Window x:Class="WpfApplication1.Trigger"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:super="clr-namespace:WpfApplication1"
        Title="Trigger" Height="300" Width="300">
    <Grid>
        <Border x:Name="m_Border" Width="100" Height="30" HorizontalAlignment="Center" VerticalAlignment="Top" Background="#FFF2FFC6" Margin="0,20,0,0">
            <Button x:Name="btn" Content="iApp" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Visibility="{Binding IsMouseOver,ElementName=m_Border, Converter={StaticResource BooleanToVisibilityConverterKey}, ConverterParameter=Normal}"/>
        </Border>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

我的转换器C#源代码:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;

namespace WpfApplication1
{

    public enum BooleanToVisibilityConverterType
    {
        Normal = 1,
        Reverse = 2
    }

    public class BooleanToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml ivalueconverter staticresource

4
推荐指数
2
解决办法
4550
查看次数