我是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" />
有人可以帮忙吗?
答案 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;