2013-09-16 3 views
0

У меня возникли проблемы с привязкой в ​​Windows Phone. Надеюсь, ты поможешь мне.Связывание между ресурсами.DataTemplate и ListBox.DataTemplate - 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>

ответ

2

В конце концов, я не смог привязать свойства к xaml, но я сделал это через код.

У меня есть DataTemplate в CustomMessageBox. Таким образом, я получил Textbox внутри CustomMessageBox с методом, который я создал:

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; 
0

Вы не можете использовать привязку ElementName, когда элемент не находится в одном NameScope.
Самый простой способ сделать то, что вы хотите, это связать SelectedItem с собственностью в вашей модели viewmodel и использовать это свойство для привязки текста вашего TextBox.

+0

Как об использовании IValueConverter? –

+0

не вижу, как IValueConverter мог бы помочь там ... –

Смежные вопросы