0

Windows Phone でのバインドに問題があります。あなたが私を助けてくれることを願っています。

App.xaml に次のデータ テンプレートがあります。

<Application.Resources>
<DataTemplate>
<TextBox Name="txt1"/>
<TextBox Name="txt2"/>
</DataTemplate>
</Application.Resources>

次のデータ テンプレートを含む ListBox があります。

<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="txt1"/>
<TextBox Name="txt2"/>
</DataTemplate>
<ListBox.ItemTemplate>
<ListBox>

ListBox は、ItemsSource プロパティで次のクラスを受け取ります。

public class Product
{

   private int _id;
   public int Id
   {
       get { return _id; }
       set { _id = value; }
   }

   private string _name;

   public string Name
   {
       get { return _name; }
       set { _name = value; }
   }

}

Resources.TextBox.TextプロパティをListBoxItemのオブジェクトにバインドする方法はありますか...

<Application.Resources>
<TextBox Name="txt1" Text={Binding ElementName=ListBox, Path=SelectedItem.Product.Name}/>
</Application.Resources>

4

2 に答える 2

2

結局、プロパティを xaml 経由でバインドできませんでしたが、コード経由でバインドしました。

CustomMessageBox に DataTemplate があります。したがって、作成したメソッドを使用して、CustomMessageBox 内に Textbox を取得しました。

    public T SearchControl<T>(DependencyObject parent, string nameControl)
        where T : DependencyObject
    {

        if (parent == null || string.IsNullOrEmpty(nameControl))
            return null;

        if (parent is T && ((FrameworkElement)parent).Name == nameControl)
            return parent as T;

        int totalControles = VisualTreeHelper.GetChildrenCount(parent);

        for (int i = 0; i < totalControles; i++)
        {

            var child = VisualTreeHelper.GetChild(parent, i);

            T control = BuscarControl<T>(child, nameControl);

            if (control != null)
                return control;

        }

        return null;

    }

そのため、メソッドを呼び出して、必要な値を割り当てました。

(SearchControl<TextBox>(CustomMessageBox, "txt1")).Text = Value;
于 2013-09-17T06:34:42.113 に答える
0

項目が同じ NameScope にない場合、ElementName バインディングは使用できません。
必要なことを行う最も簡単な方法は、SelectedItem をビューモデルのプロパティにバインドし、このプロパティを使用して TextBox のテキストをバインドすることです。

于 2013-09-16T23:25:03.777 に答える