无法设置多重绑定,因为必须指定多值转换器WPF

时间:2015-07-15 07:44:45

标签: wpf imultivalueconverter

我遇到WPF转换器问题,它给我这个错误"无法设置多重绑定,因为必须指定多值转换器WPF"。 我查看一些论坛并发现了一些信息,但它仍显示错误

我的.cs代码:

f

我的xaml:

namespace Scroll4
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>

        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                //WindowState = WindowState.Maximized;
                InitializeComponent();
            }
            public class ScrollOffsetToVisibilityConverter : IMultiValueConverter
            {
                public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
                {
                    if (values == null)
                        throw new ArgumentException("Values cannot be null.");
                    if (values.Count() != 2)
                        throw new ArgumentException("Incorrect number of bindings (" + values.Count() + ")");
                    if (parameter == null)
                        throw new ArgumentException("Parameter cannot be null.");

                    var top = parameter.ToString().ToUpper() == "TOP";

                    var offset = Double.Parse(values[0].ToString());
                    var maxHeight = Double.Parse(values[1].ToString());

                    return (top && offset == 0) || (!top && offset == maxHeight) ? Visibility.Visible : Visibility.Collapsed;
                }

                public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
                {
                    throw new NotImplementedException();
                }
            }
        }
    }

也许你知道如何解决它?

1 个答案:

答案 0 :(得分:1)

似乎只是错误的参考。并且转换器有变化。数组有Count()方法。你可能用过system.linq。只需使用命名空间

更改wpfApplication1即可
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            //WindowState = WindowState.Maximized;
            InitializeComponent();
        }
    }
    public class ScrollOffsetToVisibilityConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values == null)
                throw new ArgumentException("Values cannot be null.");
            if (values.Length != 2)
                throw new ArgumentException("Incorrect number of bindings (" + values.Length + ")");
            if (parameter == null)
                throw new ArgumentException("Parameter cannot be null.");

            var top = parameter.ToString().ToUpper() == "TOP";

            var offset = Double.Parse(values[0].ToString());
            var maxHeight = Double.Parse(values[1].ToString());

            return (top && offset == 0) || (!top && offset == maxHeight) ? Visibility.Visible : Visibility.Collapsed;
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        xmlns:local="clr-namespace:WpfApplication1" >
    <Window.Resources>
        <local:ScrollOffsetToVisibilityConverter x:Name="ConverterName"  x:Key="Converter"/>
    </Window.Resources>
    <Grid>
        <TextBox Text="Hi"/>
    </Grid>
</Window>