标签: imultivalueconverter

如何为IMultiValueConverter设置ValueConversion属性

我将转换器从IValueConverter更改为IMultiValueConverter:之前我将int转换为字符串:

[ValueConversion(typeof(int), typeof(string))]
Run Code Online (Sandbox Code Playgroud)

但现在我将int和double转换为字符串.

我该如何指定我的ValueConversion attribut?我现在有两个输入和一个输出.

wpf imultivalueconverter

16
推荐指数
2
解决办法
4935
查看次数

WPF:有没有办法在MultiValueConverter的ConvertBack方法中获取原始值?

我编写了一个MultiValueConverter,它检查给定列表是否包含给定值,如果有,则返回true.我用它来绑定自定义复选框列表.现在我想编写ConvertBack方法,这样如果选中复选框,原始值将被发送到模型.有没有办法在ConvertBack方法中访问值?

XAML:

<ListBox.ItemTemplate>
    <HierarchicalDataTemplate>
        <CheckBox Content="{Binding Path=Description}">
            <CheckBox.IsChecked>
                <MultiBinding Converter="{x:Static Classes:ListContainsMultiConverter.Instance}">
                    <Binding Path="Id" />
                    <Binding Path="DataContext.ContactTypes" RelativeSource="{RelativeSource AncestorType={x:Type Window}}" />
                </MultiBinding>
            </CheckBox.IsChecked>
        </CheckBox>
    </HierarchicalDataTemplate>
</ListBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

当我绑定时,我得到了正确的结果但是有没有办法在转换回来时获得绑定的id?我想要实现的是,如果取消选中复选框,则将从列表中删除该值,如果选中该值,则该值将添加到列表中.

wpf xaml multibinding imultivalueconverter

11
推荐指数
2
解决办法
4633
查看次数

使用IMultiValueConverter将多个CommandParameter传递给viewModel

我有以下代码:

<DataGridTemplateColumn Header="Security">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Button Name="Security" Content="{Binding Path=totalSecurities}" Command="{Binding Source={StaticResource viewModel}, Path=filterGridCommand}">
                                    <Button.CommandParameter>
                                        <MultiBinding Converter="{StaticResource PassThroughConverter}">
                                            <Binding Path="sector"/>
                                            <Binding ElementName="Security" Path="Name"/>
                                        </MultiBinding>
                                    </Button.CommandParameter>

                                </Button>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

以下是PassThroughConverter的代码:

public class PassThroughConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameters, CultureInfo culture)
    {

        return values;
    }

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

当我在命中返回值行时调试,正确的值在数组中,但是当我按下触发filtergrid命令的按钮时,返回的值都是null?谁能帮忙.谢谢.

.net wpf mvvm relaycommand imultivalueconverter

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

WPF 中是否有任何内置的 IMultiValueConverts?

我正在编写一个包含两个绑定的 MultiBinding - 每个都返回一个布尔值。使用 MultiBindings 您需要指定一个 IMultiValueConverter。在我的情况下,这个转换器应该接受两个布尔值并返回它们的 AND。这写起来真的很简单,但我必须这样做吗?这感觉就像是最基本的 MultiValueConverter,如果 .NET 中已经存在一个,我不想写一个。

那么——在吗?如果是这样 - 有哪些内置的 IMultiValueConverters ?

.net data-binding wpf imultivalueconverter

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

实现IMultiValueConverter以在单元之间进行转换

我正在开发票系统,我正在使用DataGridfor item条目.我希望用户能够以不同的单位(例如英寸,英尺,米)输入数量,并将输入的数量转换为项目的库存单位.我的第一个想法是实现一个IMultiValueConverter,但我从昨天起就一直在努力,无法弄明白.

我的转换方法肯定是有效的,我实际上已经采取了身体,将其粘贴在另一种方法中并测试其输出.我的程序在ConvertBack方法中崩溃,我是C#的新手,我从未见过有人实际实现过该方法,所以我想知道为什么它迫使我实现它(我猜它是因为我的数量绑定不是单程),但我实际上需要转换后的值返回源对象Quantity属性.

我实际上没有问题ConvertBack,但是传递给方法的value参数是用户输入的值,而不是转换后的值,为什么呢?如果它不是转换后的值,那么由于这个原因,我无法弄清楚如何倒退,因为我只能访问用户输入的内容,而不能访问该方法中所需的单位.

我意识到我对转换器的理解可能已经过时了,但是如果有人可以帮助我理解我的想法在哪里,我会很感激,以及我的问题的任何潜在的解决方法/解决方案.

提前致谢!

页/ PurchaseInvoicePage.xaml

<DataGrid x:Name="ItemsGrid" Grid.Row="2" Grid.ColumnSpan="3" PreviewKeyDown="ItemsGrid_PreviewKeyDown" ItemsSource="{Binding Items}" FontSize="11" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" RowHeaderWidth="0" GridLinesVisibility="None" CanUserResizeRows="False" CanUserResizeColumns="False" CanUserReorderColumns="False">
    <DataGrid.Columns>

        <DataGridTemplateColumn x:Name="ItemNoColumn" Width="150" Header="Item No." IsReadOnly="True">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBox Cursor="Arrow" Width="130" BorderThickness="0" Background="Transparent" IsReadOnly="True" Text="{Binding Number}" />
                        <Image Cursor="Hand" MouseDown="ItemSelectionButton_Click" Width="12" Source="/Images/Icons/SearchBlack.png" />
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <!-- question relative xaml starts here -->
        <DataGridTextColumn x:Name="QuantityColumn" Width="70" Header="Quantity">
            <DataGridTextColumn.Binding>
                <MultiBinding Converter="{StaticResource unitConverter}">
                    <Binding Path="Quantity" /> …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding datagrid imultivalueconverter

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

转换值时WPF绑定引擎的特殊值是什么?

我已经知道可以从IValueConverter实现返回的Binding.DoNothing,表示不应该进行其他操作.

但是,我找不到一个很好地总结的参考或文档,其他特殊值是什么 - 比如返回后备值.这些是什么?

.net wpf ivalueconverter imultivalueconverter

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

.NET 3.5和.NET 4.5之间的MultiBinding发生了什么?

我们目前正在将项目从3.5版转换为.NET 4.5版.

我们设置了一个文本框IsEnabled,它使用多绑定转换器进行多重绑定.每个绑定都有自己的转换器.

一切都在.NET 3.5中运行良好,但在.NET 4.5中,传递给子转换器的目标类型是object类型而不是bool.

这是一个已知的问题?MS重构多重绑定,不将目标类型传递给子转换器.

我创建了一个简化的项目来演示这个问题.我在VS2008中创建了项目,然后将其转换为VS2012和.NET 4.5.

窗口XAML:

<Window x:Class="TestMultiBinding.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TestMultiBinding"        
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <local:NotConverter x:Key="NotConverter"/>
        <local:MultiBoolConverter x:Key="MultiBoolConverter"/>
    </Window.Resources>
    <StackPanel>

        <TextBox>
            <TextBox.IsEnabled>
                <MultiBinding Converter="{StaticResource MultiBoolConverter}">
                    <Binding Path="ConditionOne" />
                    <Binding Path="ConditionTwo" Converter="{StaticResource NotConverter}"/>
                </MultiBinding>
            </TextBox.IsEnabled>
        </TextBox>


    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Globalization;

namespace TestMultiBinding
{
    /// <summary>
    /// Interaction logic for …
Run Code Online (Sandbox Code Playgroud)

wpf converter multibinding imultivalueconverter

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

IMul​​tiValueConverter 是否可用于 UWP

我正在将 a 转换WPFUWP,它使用了许多IMultiValueConverters. 我找不到IMultiValueConverter.\xc2\xa0 的任何参考。它可以在 中使用吗UWP?如果没有,是否有替代方案?

\n

wpf imultivalueconverter uwp

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

如何在WPF DataTrigger上的多值转换器中传递多个参数

我有四个int属性ProOne,ProTwo,ProThreeProFour

我必须((ProOne == ProTwo) || (ProThree == ProFour))在多值转换器中实现布尔逻辑VisibilityCheckConverter.基于逻辑,多值转换器VisibilityCheckConverter返回TrueFalse.

现在我需要将四个属性传递给Converter over DataTrigger,基于Value,我必须将Buttons Visibility更改为Visible

请帮助我如何使用具有多个参数的多值转换器编写DataTrigger

XAML代码示例:

<ControlTemplate.Triggers>
    <DataTrigger Property="{Binding , Converter={StaticResource VisibilityCheckConverter,ConverterParameter=ProOne ProTwo ProThree ProFour}}" Value="true">
        <Setter TargetName="Button" Property="Visibility" Value="Visible" />
    </DataTrigger>
</ControlTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)

c# wpf multiparameter datatrigger imultivalueconverter

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

如何从 Convert 获取 ConvertBack 参数?

问题:

我正在使用MultiBinding转换器将(x,y)坐标传递给方法。

我不能让它在反向工作:

public class MyConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        var x = (int)values[0];
        var y = (int)values[1];
        return Model.Get(x, y);
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        Model.Set(x, y, value); // how to get x, y here?
        return new object[] { Binding.DoNothing, Binding.DoNothing };
    }
}
Run Code Online (Sandbox Code Playgroud)

附加信息:

数据将以表格的形式可视化。这是单元格模板:

<TextBox>
    <TextBox.Text>
        <MultiBinding Converter="{StaticResource converter}" Mode="TwoWay">
            <Binding Path="X" Mode="OneWay" />
            <Binding Path="Y" …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm imultivalueconverter

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

带有Property vs MultiConverter的WPF转换器?

使用转换器(IValueConverter)和传入其他值作为参数(ConverterParameter)与使用MultiConverter(IMultiValueConverter)并传递多个转换器值之间有什么区别?

wpf xaml ivalueconverter imultivalueconverter

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

对WPF中项目集合的可见性

我有下拉和网格.在网格列中有超链接.如果Dropdown集合包含1个项目,则下拉列表应该是不可见的.我需要一个逻辑来将Visibility绑定到项目集合.

这是GRid中一个超链接的XAML.

   <!--Associate-->
                    <TextBlock Margin="10, 0, 0, 0">                                    
                        <TextBlock.Visibility>                                           
                                 <MultiBinding Converter="{StaticResource courseListVisibilityConverter}"
                                                     ConverterParameter="Associate">
                                          <Binding Path="IsCourseAssocited"
                                                   RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType={x:Type DPA2:TakenCoursesNotApplied}}" />
                                            <Binding Path="DataContext"
                                                     RelativeSource="{RelativeSource Self}" />
                                       </MultiBinding>
                            </TextBlock.Visibility>

                        <Hyperlink DataContext="{Binding}"
                                   Name="Associate"
                                    IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBlock}}, Path=IsVisible}"
                                    Click="Associate_Click">
                            <TextBlock TextWrapping="Wrap"
                                        Text="Associate" />
                        </Hyperlink>
                    </TextBlock>

 public class CourseListVisibilityConverter : IMultiValueConverter
{
    public object Convert(object[] value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null || value[0] == null || value[1] == null) return Visibility.Collapsed;
        bool IsEditMode = value[0] == DependencyProperty.UnsetValue ? …
Run Code Online (Sandbox Code Playgroud)

c# wpf grid imultivalueconverter

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

无法将“MS.Internal.NamedObject”类型的对象转换为“System.IConvertible”

我有一个选项卡控件,其中有许多选项卡项。我正在尝试将多值转换器应用于 tabitem 的可见性属性。

<TabControl>
 <TabItem
            DataContext="{Binding TabModel[3]}"
            x:Name="Tab3"
            Header="Test">
                <TabItem.Visibility>
                    <MultiBinding Converter="{StaticResource settingsvisibility}">
                        <Binding Path="UserRole"/>
                        <Binding Path="UserName"/>
                    </MultiBinding>
                </TabItem.Visibility>
                <tabView:view />
            </TabItem></tabControl>
Run Code Online (Sandbox Code Playgroud)

我的转换器代码如下

 public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            Visibility visiblity = Visibility.Collapsed;
            int id = System.Convert.ToInt32(values[0]);
            string tabName = values[1].ToString();
...
....
...
}
Run Code Online (Sandbox Code Playgroud)

但是这些值没有正确传递。我收到以下异常

无法将“MS.Internal.NamedObject”类型的对象转换为“System.IConvertible”类型。谁能帮我摆脱这个问题?

wpf tabcontrol imultivalueconverter

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