Wpf中的绑定按钮内容值

时间:2014-07-03 11:13:28

标签: c# wpf xaml

我是Wpf的新手。基本上我实现Button内容值动态变化。这是我的代码。

XAML:

<Button x:Name="btnTest"  Content="NO" HorizontalAlignment="Left"VerticalAlignment="Top" Width="233" Height="40" Click="btnTest_Click" />

Cs文件:

 private void btnTest_Click(object sender, RoutedEventArgs e)
    {          
        if (btnTest.Content.ToString() == "NO")
        {
            btnTest.Content = "YES";
        }
        else if (btnTest.Content.ToString() == "YES")
        {
            btnTest.Content = "NO";
        }
    } 

我怎样才能在&#34; Binding&#34;中实现同样的目标。逻辑。

XAML:

  <Button x:Name="btnTest"  Content="{Binding ???}"   HorizontalAlignment="Left"VerticalAlignment="Top" Width="233" Height="40" Click="btnTest_Click" /> 

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

就像这样:

Content="{Binding XXX, Mode=TwoWay, ValidatesOnDataErrors=True}"

这将从Content获取值(在这种情况下为DataContext)。

编辑:

A)创建数据上下文(代码隐藏版本):

this.DataContext = new SomeViewModel();

你可以把它放在你的构造函数中(在control / form / whatever中)......

B)最后SomeViewModel只是一个类:

public class SomeViewModel : IDataErrorInfo // sample interface
{
    private string _xxx;

    public string IP
    {
        get { return _xxx; }
        set { _xxx = value; }
    }
}

答案 1 :(得分:1)

你可以试试这个

Content= "{Binding RelativeSource={RelativeSource Self}, Path=YNText, Mode=OneWay}"

并将其添加到

背后的代码中
public string YNText {
    get
    {
        _switch = !_switch;
        return _switch ? "YES" : "NO";
    }
}

private bool _switch;