2

ExpressionBlendを使用しています。

私が得たとしましょう:

Public string FirstName{get;set;}

編集:答えてくれてありがとう、でも人々は私の質問を理解していなかったのではないかと思います。コードまたはXAMLでデータをバインドする方法を知っています。

私の質問は、Expression Blendインターフェイスを直接記述せずに、これらすべてを実行する方法があるかどうかです。マウスの動きでのみ。

4

2 に答える 2

6

実際には、プロパティをビューモデルに配置し、XAMLバインディングを使用する必要がありますが、それは別の話です。

例を説明するときは、最初に「FirstName」プロパティを単純なget / setではなく、Dependencyプロパティとして実装する必要があります。これは、多くの入力を節約するためのShawn Wildermuthの優れたコードスニペットです(スニペットには修正が必要なタイプミスが1つあります-"($ type $)args。NewValue ;"...NewValueの大文字と小文字が間違っています。スニペット)。

XAMLで単純なget/setプロパティにバインドできますが、これは一方向/ 1回限りのバインドであり、変更によって更新されません。

コードでは、バインディングには2つの設定が必要です。

  • コントロール(またはページ)のDataContextを設定し、
  • コントロールにデータバインディングを設定します。

あなたが言及した例では、次のようなコードを使用できます(XamlでmyTextBoxと呼ばれるTextBoxコントロールを想定しています)。

using System.Windows;
using System.Windows.Controls;

namespace BindingCodeTest
{
    public partial class BindingCode : UserControl
    {
        public string FirstName
        {
            get { return (string)GetValue(FirstNameProperty); }
            set { SetValue(FirstNameProperty, value); }
        }

        // Using a DependencyProperty as the backing store for FirstName.  
        // This enables animation, styling, binding, etc...
        public static readonly DependencyProperty FirstNameProperty =
        DependencyProperty.Register("FirstName",
                                     typeof(string),
                                     typeof(BindingCode),
                                     new PropertyMetadata(string.Empty,
                                     new PropertyChangedCallback(OnFirstNameChanged)));

        static void OnFirstNameChanged(object sender, DependencyPropertyChangedEventArgs args)
        {
            // Get reference to self
            BindingCode source = (BindingCode)sender;

            // Add Handling Code
            string newValue = (string)args.NewValue;
        }

        public BindingCode()
        {
            InitializeComponent();
            myTextBox.DataContext = this;
            myTextBox.SetBinding(TextBox.TextProperty, new System.Windows.Data.Binding("FirstName"));
            FirstName = "First name";    // Sample change
        }
    }
}
于 2010-08-22T18:16:26.133 に答える
5

Blend4の[データ]タブ>[新しいサンプルデータ]>必要に応じてデータソースに名前を付けます。fe'MySampleDataSource'。次に、「MySampleDataSource」には、3つのオプションを備えた「+」ボタン(右側の同じデータタブ)があります。「単純なプロパティの追加」を選択し、「FirstName」という名前を付けます。次に、そのプロパティをTextBoxまたはTextBlockにドラッグします。

結果は次のようになります。

<TextBlock x:Name="firstName" Text="{Binding FirstName}"/>
于 2010-08-23T14:18:32.640 に答える