【发布时间】:2013-12-20 12:05:26
【问题描述】:
我收到此错误:
在“System.Windows.Markup.StaticResourceHolder”上提供值抛出了一个 例外。
使用 xaml 代码:
<WrapPanel Orientation="Horizontal" Grid.Row="0" >
<WrapPanel.Visibility>
<Binding Path="setVisible" Converter="{StaticResource BooleanToVisibilityConverter}" ConverterParameter="{Binding setVisible}"/>
</WrapPanel.Visibility>
//textblocks goes here
</WrapPanel>
和类:
public class dataTemplate_xItem
{
(...)
public bool setVisible { get; set; }
public sealed class BooleanToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var flag = false;
if (value is bool)
{
flag = (bool)value;
}
else if (value is bool?)
{
var nullable = (bool?)value;
flag = nullable.GetValueOrDefault();
}
if (parameter != null)
{
if (bool.Parse((string)parameter))
{
flag = !flag;
}
}
if (flag)
{
return Visibility.Visible;
}
else
{
return Visibility.Collapsed;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
var back = ((value is Visibility) && (((Visibility)value) == Visibility.Visible));
if (parameter != null)
{
if ((bool)parameter)
{
back = !back;
}
}
return back;
}
}
}
在我将项目添加到 ListView 之前,检查
if(myValue != 0)
newItem.setVisible = true;
else
newItem.setVisible = false;
知道出了什么问题吗? :)
【问题讨论】:
-
我看到至少一件事是错误的,绑定
ConverterParameter。详情请见this answer。
标签: c# wpf datatemplate wrappanel