WPF多值绑定及多值转换(MultiBinding和IMultiValueConverter)

WPF可以使用MultiBinding进行多值绑定,使用IMultiValueConverter进行多值转换

例:

(1)转换器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ContentConverter : IMultiValueConverter
{
    //源属性传给目标属性时,调用此方法ConvertBack
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        if (values == null || values.Length == 0)
            throw new ArgumentNullException("values can not be null");
 
        string s = "";
        foreach (var item in values)
        {
            s += System.Convert.ToString(item);
        }
 
        return s;
    }
 
    //目标属性传给源属性时,调用此方法ConvertBack
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        return null;
    }
}

(2)绑定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Window.Resources>
    <local:ContentConverter x:Key="content"></local:ContentConverter>
</Window.Resources>
<Grid>
    <Label HorizontalAlignment="Left" Height="23" Margin="243,208,0,0" Foreground="{Binding Status,Converter={StaticResource foreColor},Mode=OneWay}" VerticalAlignment="Top" Width="120">
        <Label.Content>
            <MultiBinding Converter="{StaticResource content}">
                <Binding Path="Str1"/>
                <Binding Path="Str2"/>
                <Binding Path="Str3"/>
            </MultiBinding>
        </Label.Content>
    </Label>
    <Button Content="Button" HorizontalAlignment="Left" Margin="35,44,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
</Grid>

(3)button click事件

1
2
3
4
5
6
private void Button_Click(object sender, RoutedEventArgs e)
{
    window2ViewModel.Str1 = "1";
    window2ViewModel.Str2 = "2";
    window2ViewModel.Str3 = "3";
}

(4)效果  lable显示 str1,str2和str3相加后的字符串

 

 

  

 

posted @   翻白眼的哈士奇  阅读(7720)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示