好的,我有一套TextBlock。
<Grid x:Name="MyGrid">
<TextBlock Text={Binding value1} />
<TextBlock Text={Binding value2} />
</Grid>
和C#后端:
mydata.value1 = "value1";
mydata.value2 = "value2";
MyGrid.DataContext = mydata;
现在,我想绑定到这个Blocks Foreground颜色,如下所示:
//C#
private bool isViewingPage1;
private bool IsViewingPage1
{
get { return this.isViewingPage1; }
set
{
this.isViewingPage1 = value;
NotifyPropertyChanged();
}
}
//XAML
<Grid x:Name="MyGrid">
<TextBlock Text={Binding value1} Foreground={Binding IsViewingPage1, Converter={StaticResource MyConverter}} />
<TextBlock Text={Binding value2} Foreground={Binding IsViewingPage1, Converter={StaticResource MyConverter}} />
</Grid>
因此,如果IsViewingPage1 == true
,第一个TextBlock将为绿色,第二个将为红色。如果为false,则第一个为红色,第二个为绿色。转换器工作正常。但是我如何将两个不同的值绑定到一个元素?
我试过这样的事情:
public class MyClass : INotifyPropertyChanged
{
public MyDataType mydata;
public bool IsViewingPage1;
//INotifyPropertyChanged implemetation
}
//...
MyClass a = new MyClass();
a.mydata = mydata;
a.IsViewingPage1 = IsViewingPage1;
MyGrid.DataContext = a;
//XAML
<Grid x:Name="MyGrid">
<TextBlock Text={Binding mydata.value1} Foreground={Binding IsViewingPage1, Converter={StaticResource MyConverter}} />
<TextBlock Text={Binding mydata.value2} Foreground={Binding IsViewingPage1, Converter={StaticResource MyConverter}} />
</Grid>
......但它对我没有帮助。有什么想法吗?
答案 0 :(得分:0)
确定文本块的颜色或至少状态(颜色应该是模型中未定义的特定视图)的逻辑应该在视图模型中。因此,您可以拥有每个文本块的状态并绑定到它们,在视图模型中,您可以根据IsViewingPage bool设置文本块的状态。
答案 1 :(得分:0)
通知的属性必须是公开的。变化
private bool IsViewingPage1
到
public bool IsViewingPage1