1

コード ビハインドでプロパティを含むオブジェクトを定義し、xaml でオブジェクトを datacontext に設定したいと考えています。

namespace WpfApplication4
{

    public partial class MainWindow : Window
    {
        public EquipInfo equip1;

        public MainWindow()
        {
            InitializeComponent();

            equip1 = new EquipInfo();
            //  setting here works fine but i want to do in xaml
            //textBox1.DataContext = equip1; 
        }
    }
}

ここにxamlコードがあります..

<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBox Text="{Binding Path=PIN}" Height="23" 
                 HorizontalAlignment="Left" Margin="172,208,0,0" 
                 Name="textBox1" VerticalAlignment="Top" Width="120" />
    </Grid>
</Window>
4

3 に答える 3

3

XAML を介して DataContext をパブリック プロパティに設定できます。これを行う方法については、blindmeis が良い例を示しています。

Post で行ったことは、DataContext を設定することではなく、コントロールの Text プロパティをウィンドウのプロパティにバインドすることでした。これは、DataContext が設定されている場合にのみ機能します。MVVM を実行したくない場合 (ただし、これをお勧めします)、それを行う別の方法は、バインディング内の特定の要素を参照することです。

1.) メンバーを AutoProperty などに変更する

public EquipInfo equip1 {get;set;}

2.) ウィンドウに名前を付けます

<Window x:Class="WpfApplication4.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Name="myWin"
    Title="MainWindow" Height="350" Width="525">

2.) インスタンス名でウィンドウのプロパティにアクセスする

<TextBox Text="{Binding ElementName=myWin, Path=equip1.PIN}"/>

余談ですが、代わりにMVVMを使用する方が良いでしょう

于 2012-05-09T06:31:00.507 に答える
1

コードビハインドでequipinfoクラスを作成するときは、そこにデータコンテキストを設定してみませんか?

それでも、xamlでデータコンテキストを作成できます(その場合、コードビハインドは必要ありませんでした)

<TextBox Text="{Binding Path=PIN}">
     <TextBox.DataContext>
         <local:equip1/>
      </TextBox.DataContext>
 </TextBox>

しかし、MVVMパターンを見てください

于 2012-05-09T06:21:45.540 に答える
1

コードビハインドでequipinfoクラスを作成するとき、そこにデータコンテキストを設定しないのはなぜですか?

MVVM の要点は、ビューモデル プロキシを使用して UI をコード ビハインドから分離することです。ui 要素を参照してそのデータ コンテキストを設定する場合は、それを参照してその値を設定し、mvvm のことは忘れてください。

于 2013-07-01T16:09:40.507 に答える