3

ユーザーコントロールにテキストボックスがあり、ユーザーコントロールにプロパティを作成しました。テキストボックスのテキストプロパティをユーザーコントロールで作成されたプロパティにバインドしたいと思います。

問題は、XAML で現在のクラスにデータ コンテキストを指定する方法がわからないことです。

何か案が??ありがとう

4

2 に答える 2

2

これにより、テキストボックスに入力したものがコードビハインドのプロパティに取得されます。プロジェクトのサイズに応じて、MVVM がコードを ViewModel にプッシュすることを検討し、UserControl で this.DataContext = ViewModel のインスタンスを指定します。

Xaml:

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <StackPanel>

        <TextBox Text="{Binding Foo,Mode=TwoWay}"/>

        <Button Content="Click" Click="Button_Click"/>

    </StackPanel>

</UserControl>

コードビハインド:

 public partial class MainPage : UserControl
 {
    public string Foo { get; set; }

    public MainPage ()
    {
      InitializeComponent();
      this.DataContext = this;
    }
 }
于 2010-02-10T17:14:12.493 に答える
0

コードでバインディングを作成します。TextBox が、ユーザー コントロールで呼び出されるx:Name="MyTextBox"依存関係プロパティ (または少なくともINotifyPropertyChanged実装された標準プロパティ)を追加したことも想定しているとします。MyText

  public partial class MainPage : UserControl
  {
   public MainPage ()
   {
     InitializeComponent();
     Binding binding = new Binding("MyText");
     binding.Mode = BindingMode.TwoWay;
     binding.Source = this;
     MyText.SetBinding(TextBox.TextProperty, binding);
   }
 }

これにより、UserControl のDataContextプロパティは、他のより一般的な用途のために開いたままになります。

于 2010-02-11T11:37:36.450 に答える