多绑定和绑定到视图模型

时间:2014-08-21 11:05:29

标签: wpf mvvm

假设此代码设置了标签的内容:

    <Label.Content>
            <MultiBinding Converter="{StaticResource converter}">
                <Binding ElementName="EmailTextBox" Path="(Validation.Errors)"/>
                <Binding ElementName="PhoneNumberTextBox" Path="(Validation.Errors)"/>
                <Binding ElementName="MobileNumberTextBox" Path="(Validation.Errors)"/>
            </MultiBinding>
    </Label.Content>

它工作正常,但(在这种情况下)是否可以将标签的内容绑定到视图模型,因此视图模型会立即通知标签的内容更改?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,它似乎正在工作,您需要创建自己的Label,然后添加DependencyProperty,每次更改内容时都会分配。不幸的是,没有像ContentChanged这样的事件表明Content已被更改,所以我不得不在自己的Label中添加它。看看,让我知道它是否有效。

class MyLabel : Label
{
    public static readonly DependencyProperty MyContentProperty = DependencyProperty.Register("MyContent", typeof(string), typeof(MyLabel));
    public string MyContent
    {
        get { return (string)GetValue(MyContentProperty); }
        set { SetValue(MyContentProperty, value); }
    }

    static MyLabel()
    {
        ContentProperty.OverrideMetadata(typeof(MyLabel),
            new FrameworkPropertyMetadata(new PropertyChangedCallback(OnContentChanged)));

    }
    private static void OnContentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        MyLabel obj = d as MyLabel;
        if (obj != null)
            obj.MyContent = obj.Content.ToString();
    }
}

和XAML如下所示

<Window x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication3" WindowStartupLocation="CenterScreen"
    Title="MainWindow" Height="350" Width="525">
    <local:MyLabel Content="Content" MyContent="{Binding Zmienna, Mode=OneWayToSource}"/>

现在在Zmienna属性中,您有内容值。