我一直在尝试将两个文本框绑定到一个标签,因此标签总是会根据两个文本框的内容进行更新。但没有运气。我设法解决了如何绑定一个。
使用
Content="{Binding Text,ElementName=PersonName,UpdateSourceTrigger=PropertyChanged}"
所以看起来像这样
<UserControl x:Class="FitTracker.CreateTrackItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FitTracker"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TextBox Name="PersonName" HorizontalAlignment="Left" Height="23" Margin="10,77,0,0" TextWrapping="Wrap" Text="Name" VerticalAlignment="Top" Width="280" />
<TextBox Name="PersonLevel" HorizontalAlignment="Left" Height="23" Margin="10,105,0,0" TextWrapping="Wrap" Text="Level" VerticalAlignment="Top" Width="280"/>
<Label Name="TrackDetails" Content="{Binding Text,ElementName=PersonName,UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Margin="10,133,0,0" VerticalAlignment="Top" Width="280" FontWeight="Bold" Background="#00000000" Foreground="White" />
</Grid>
</UserControl>
但是我不能用两个文本框来做。任何可以帮助我走上正确道路的想法或指南。
我一直在寻找几个小时。
答案 0 :(得分:3)
使用MultiBinding:
<TextBox x:Name="PersonName"/>
<TextBox x:Name="PersonLevel"/>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="Name: {0}, Level: {1}">
<Binding Path="Text" ElementName="PersonName"/>
<Binding Path="Text" ElementName="PersonLevel"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
答案 1 :(得分:1)
您可以将TextBlock与多个Run元素一起使用:
<TextBox x:Name="PersonName"/>
<TextBox x:Name="PersonLevel"/>
<TextBlock>
<TextBlock.Inlines>
<Run Text="{Binding Text, ElementName=PersonName}"/>
<Run Text="{Binding Text, ElementName=PersonLevel}"/>
</TextBlock.Inlines>
<TextBlock>
答案 2 :(得分:0)
您还可以声明一个新属性,例如
public string JoinedProps {get {return PersonName+ PersonLevel;}}
不要忘记在两个PersonName上通知JoinedProps的属性更改 和PersonLevel字段