假设此代码设置了标签的内容:
<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>
它工作正常,但(在这种情况下)是否可以将标签的内容绑定到视图模型,因此视图模型会立即通知标签的内容更改?
提前致谢。
答案 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属性中,您有内容值。