繁体   English   中英

无法设置多重绑定

[英]Cannot set multibinding

我的多重绑定不起作用。 我收到错误: 名称'MatrixToDataViewConverter'在我的xaml 命名空间'clr-NameSpace:myNamespace'不存在 (我已标记了该行)。 为什么?

XAML

 <Window x:Class="myNamespace.PopMeUp"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:app="clr-namespace:myNamespace"
            Title="PopMeUp" Height="300" Width="300">
        <Window.Resources>
            <app:MatrixToDataViewConverter x:Key="MatrixToDataViewConverter"/> <!-- Error here-->
        </Window.Resources>
        <Grid>
            <DataGrid>
                <DataGrid.ItemsSource>
                    <MultiBinding Converter="{StaticResource MatrixToDataViewConverter}">
                        <Binding Path="ColumnHeaders"/>
                        <Binding Path="RowHeaders"/>
                        <Binding Path="Values"/>
                    </MultiBinding>
            </DataGrid.ItemsSource>
          </DataGrid>
        </Grid>
    </Window>

.cs文件:

namespace myNamespace    
{
    /// <summary>
    /// Interaction logic for PopMeUp.xaml
    /// </summary>
    public partial class PopMeUp : Window
    {
        public PopMeUp(MWArray[] Result, int rows, int columns)
        {
            InitializeComponent();
        }

        public class MatrixToDataViewConverter : IMultiValueConverter
        {
            public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
            {
                var myDataTable = new DataTable(); 
                return myDataTable.DefaultView;
            }


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

问题是, MatrixToDataViewConverter是一个嵌套类。 像这样重构cs文件:

namespace myNamespace    
{
    /// <summary>
    /// Interaction logic for ResultPopUp.xaml
    /// </summary>
    public partial class ResultPopUp : Window
    {
        public ResultPopUp(MWArray[] Result, int rows, int columns)
        {
            InitializeComponent();
        }        
    }

    public class MatrixToDataViewConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            var myDataTable = new DataTable(); 
            return myDataTable.DefaultView;
        }

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

然后对您的解决方案执行CleanRebuild 关闭XAML设计器并重新打开它。

您不能将IValueConverterIMultiValueConverter定义为嵌套类。 只需将其放在单独的文件中或至少放在ResultPopUp类之外。

有关详细信息,请参阅: 绑定转换器作为内部类?

也许你必须在重构后清理并重建你的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM