ユーザーコントロールにテキストボックスがあり、ユーザーコントロールにプロパティを作成しました。テキストボックスのテキストプロパティをユーザーコントロールで作成されたプロパティにバインドしたいと思います。
問題は、XAML で現在のクラスにデータ コンテキストを指定する方法がわからないことです。
何か案が??ありがとう
ユーザーコントロールにテキストボックスがあり、ユーザーコントロールにプロパティを作成しました。テキストボックスのテキストプロパティをユーザーコントロールで作成されたプロパティにバインドしたいと思います。
問題は、XAML で現在のクラスにデータ コンテキストを指定する方法がわからないことです。
何か案が??ありがとう
これにより、テキストボックスに入力したものがコードビハインドのプロパティに取得されます。プロジェクトのサイズに応じて、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;
}
}
コードでバインディングを作成します。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プロパティは、他のより一般的な用途のために開いたままになります。