我有一个文本框,它绑定到数据服务以获取其内容。目前,数据服务将1到9之间的数字放入该文本框中。我需要做的是基于该值用字符串替换该文本框的内容。因此,例如,如果文本框的原始内容为“1”,则将替换为“1 - 示例文本”
以下是定义文本框的代码。
<StackPanel Margin="0,0,0,17" Width="432">
<TextBlock Text="{Binding Category1}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding Category2}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Text="{Binding Category3}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
</StackPanel>
我想我可能会使用else if语句,但我不知道如何从if语句中引用textblock。
感谢您的帮助
答案 0 :(得分:1)
你需要命名TextBlock,以便它可以被后面的代码引用,所以类似下面的代码将起作用
<TextBlock x:Name="tb1" Text="{Binding Category1}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextNormalStyle}"/>
if (tb1.Text == "something")
{
DoSomething();
}
else
{
DoSomethingElse();
}
答案 1 :(得分:0)
您可以定义值转换器。例如:
public class IntToTextConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
// Do the conversion from int to Text
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
// Do the conversion from Text to int
}
}
<Window x:Class="MyNamespace.Window1"
...
xmlns:my="clr-namespace:MyNamespace"
...>
<Window.Resources>
<my:IntToTextConverter x:Key="converter" />
</Window.Resources>
<Grid>
<TextBox Text={Binding Category1, Converter={StaticResource converter}}/>
</Grid>
</Window>
有一篇关于价值转换器的好文章here