好吧,这里的一些聪明人告诉我在操作 UI 项时应该使用绑定。好吧,我对这个有约束力的话题有了一点了解,但是有一件奇怪的事情一直在折磨我。让我们举个例子,这样我就可以更好地描述我的问题。
xml代码:
<TextBox x:Name="MyTextBox"
Text="Text"
Foreground="{Binding Brush1, Mode=OneWay}"/>
c#代码:
public class MyColors : INotifyPropertyChanged
{
private SolidColorBrush _Brush1;
// Declare the PropertyChanged event.
public event PropertyChangedEventHandler PropertyChanged;
// Create the property that will be the source of the binding.
public SolidColorBrush Brush1
{
get { return _Brush1; }
set
{
_Brush1 = value;
// Call NotifyPropertyChanged when the source property
// is updated.
NotifyPropertyChanged("Brush1");
}
}
// NotifyPropertyChanged will raise the PropertyChanged event,
// passing the source property that is being updated.
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
}
现在要更改前景的颜色,我可以简单地用代码编写:
MyColors textcolor = new MyColors();
// Brush1 is set to be a SolidColorBrush with the value Red.
textcolor.Brush1 = new SolidColorBrush(Colors.Red);
// Set the DataContext of the TextBox MyTextBox.
// MyTextBox.DataContext = textcolor;
MyTextBox.Foreground = new SolidColorBrush(Colors.Blue);
呸,我们终于明白了。现在让我们转到我使用的第二个解决方案。
xml:
<TextBox x:Name="MyTextBox"/>
c#: MyTextBox.Foreground = new SolidColorBrush(Colors.Red);
哇,同样的效果:o 所以现在我的问题是。
除了这件事之外,还有什么命令给了我?Cus 在这一点上我没有看到结果有太大的不同,期望第一个示例占用更多空间并且实现了偶数,而第二个示例占用了 2 行。谁能给我一个很好的例子,他们可以派上用场,因为 msdn 的例子没有给我一个明确的答案。