[英]Multibinding generates “Cannot set MultiBinding because MultiValueConverter must be specified”
[英]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();
}
}
}
然后对您的解决方案执行Clean
和Rebuild
。 关闭XAML设计器并重新打开它。
您不能将IValueConverter
或IMultiValueConverter
定义为嵌套类。 只需将其放在单独的文件中或至少放在ResultPopUp
类之外。
有关详细信息,请参阅: 绑定转换器作为内部类?
也许你必须在重构后清理并重建你的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.