ここの賢い人が、UI アイテムを操作するときにバインドを使用する必要があることを教えてくれました。さて、私は束縛の話題に少し慣れましたが、私の心を強姦し続ける奇妙なことが1つあります. 私の問題をよりよく説明できるように、例を作りましょう。
xaml コード:
<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);
ふう、ついに手に入れました。次に、私が使用した 2 番目のソリューションに進みましょう。
xaml:
<TextBox x:Name="MyTextBox"/>
c#: MyTextBox.Foreground = new SolidColorBrush(Colors.Red);
なんと、同じ効果 :o では、私の質問は次のとおりです。
このことを超えて、どんな入札が私に与えますか? この時点では、結果に大きな違いは見られません。最初の例ではさらに多くのスペースが必要で、偶数が実装されていて、2 番目の例では 2 行かかることを期待してください。msdnの例では明確な答えが得られないため、誰でも便利な良い例を教えてもらえますか。