具有属性的 ValueConverter
ValueConverter with properties
扩展以下问题:
我的问题是:
在 xaml 文件中,TrueValue 设置为单个值:
<CheckBox IsChecked="{Binding item, Converter={converter:ValueConverterWithProperties TrueValue=5}}"></CheckBox>
是否可以将 ValueConverter 中的 属性 绑定到某种列表?
绑定表达式会是什么样子?
绑定到 IValueConverter
的参数或属性据我所知不起作用,但您可以使用 IMultiValueConverter
并将附加值绑定到所需的 属性:
<MultiBinding Converter="{StaticResource MultiValueConverter}">
<Binding Path="YourValue" />
<Binding Path="YourParameter" />
</MultiBinding>
然后使用values[0]
作为实际值,values[1]
作为参数。
您可以在转换器 class 中声明依赖项 属性,将转换器声明为静态资源并将 属性 绑定到视图模型 属性。
这将起作用:
<Window x:Class="..."
x:Name="_this"
...>
<Window.Resources>
<local:DepPropConverter x:Key="Convert"
MyList="{Binding DataContext.YourListInViewmodel, Source={x:Reference _this}}"/>
</Window.Resources>
<CheckBox IsChecked="{Binding item, Converter={StaticResource Converter}}"></CheckBox>
转换器:
public class DepPropConverter : DependencyObject, IValueConverter
{
public static readonly DependencyProperty MyListProperty =
DependencyProperty.Register(
nameof(MyList), typeof(IList), typeof(DepPropConverter));
public IList MyList
{
get { return (IList)GetValue(MyListProperty); }
set { SetValue(MyListProperty, value); }
}
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
//your logic here
return value;
}
public object ConvertBack(
object value, Type targetTypes, object parameter, CultureInfo culture)
{
//your logic here
return value;
}
}
扩展以下问题:
我的问题是:
在 xaml 文件中,TrueValue 设置为单个值:
<CheckBox IsChecked="{Binding item, Converter={converter:ValueConverterWithProperties TrueValue=5}}"></CheckBox>
是否可以将 ValueConverter 中的 属性 绑定到某种列表? 绑定表达式会是什么样子?
绑定到 IValueConverter
的参数或属性据我所知不起作用,但您可以使用 IMultiValueConverter
并将附加值绑定到所需的 属性:
<MultiBinding Converter="{StaticResource MultiValueConverter}">
<Binding Path="YourValue" />
<Binding Path="YourParameter" />
</MultiBinding>
然后使用values[0]
作为实际值,values[1]
作为参数。
您可以在转换器 class 中声明依赖项 属性,将转换器声明为静态资源并将 属性 绑定到视图模型 属性。
这将起作用:
<Window x:Class="..."
x:Name="_this"
...>
<Window.Resources>
<local:DepPropConverter x:Key="Convert"
MyList="{Binding DataContext.YourListInViewmodel, Source={x:Reference _this}}"/>
</Window.Resources>
<CheckBox IsChecked="{Binding item, Converter={StaticResource Converter}}"></CheckBox>
转换器:
public class DepPropConverter : DependencyObject, IValueConverter
{
public static readonly DependencyProperty MyListProperty =
DependencyProperty.Register(
nameof(MyList), typeof(IList), typeof(DepPropConverter));
public IList MyList
{
get { return (IList)GetValue(MyListProperty); }
set { SetValue(MyListProperty, value); }
}
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
//your logic here
return value;
}
public object ConvertBack(
object value, Type targetTypes, object parameter, CultureInfo culture)
{
//your logic here
return value;
}
}