更新绑定到数据源的文本框的内容,具体取决于数据源放入文本框的值

时间:2011-05-01 16:52:35

标签: c# visual-studio silverlight windows-phone-7 if-statement

我有一个文本框,它绑定到数据服务以获取其内容。目前,数据服务将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。

感谢您的帮助

2 个答案:

答案 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