Na przykład, czy można powiązać właściwość Text bloku Text z elementem Nazwa [2] typu String?Czy w C# i WPF można powiązać element tablicy z właściwością obiektów?
Odpowiedz
Nie jestem pewien, co dokładnie masz na myśli mówiąc: elementem Nazwa [2] typu String, więc tutaj są dwa możliwe rozwiązania twojego problemu: Array1 i String1. Array1 pokazuje łuk, aby powiązać element tablicy, a String1 pokazuje jak wyświetlić jeden znak w ciągu.
KOD:
public partial class MainWindow : Window
{
private Array array1 = new[] {"test1", "test2", "test3"};
public Array Array1 { get { return array1; } }
public string string1 = "string";
public string String1 { get { return string1; } }
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
}
XAML:
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Array1[0]}"/>
<TextBlock Text="{Binding Array1[2]}"/>
<TextBlock Text="{Binding String1[0]}"/>
<TextBlock Text="{Binding String1[1]}"/>
</StackPanel>
nadzieję, że pomoże.
Dzięki to działa, ale aktualizacja źródła nie aktualizuje kontrolki docelowej. Próbowałem wszystkiego i to nie działa tak daleko. Czy powinienem używać ObservableCollection? – Scifiballer24
Ponieważ ten komentarz nie pozwala, wysłałem kolejną odpowiedź. –
jeśli oznacza to, że jeśli możemy powiązać element tablicy z pola tekstowego, a następnie, tak
<TextBox Margin="10" Text="{Binding Name[2], Mode=Default}" Name="textBox1"/>
TextBox nie ma właściwości Content. –
Przepraszam ... to mój błąd, dziękuję – Azhar
Tak można. Poniżej przedstawiono podejście XAML. Wskazane jest powiązanie z kolekcją Observable, jeśli chcesz zaktualizować interfejs automatycznie po zmianie wartości.
public class DataStub
{
public Array SomeNorthEasternStates
{
get
{
return new[] { "NH", "VT", "CT", "MA", "ME" };
}
}
}
XAML: Zakładając DataContext jest ustawiony prawidłowo:
<TextBox Margin="5" Text="{Binding SomeNorthEasternStates[3], Mode=Default}"/>
Czy istnieje szczególny powód, dla którego używasz metod z klasy 'Array' zamiast po prostu' var testArray = new string [5]; testarray [0] = "NY"; ... '. – Heinzi
@Heinzi - Lub var testArray = new [] {"NH", "VT", "CT", "MA", "ME"}; (NY i NJ nie są w Nowej Anglii) :) –
@ John Bowen. Mój błąd. Zmieniono nazwę. – SKG
Dodałem przycisk w Xaml i zasubskrybowane zdarzenie "kliknij".
Oto kod C#.
public partial class MainWindow : Window, INotifyPropertyChanged
{
private Array array1 = new[] { "test1", "test2", "test3" };
public Array Array1 { get { return array1; } }
public string string1 = "string";
public string String1
{
get { return string1; }
set
{
string1 = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("String1"));
}
}
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
private void Button_Click(object sender, RoutedEventArgs e)
{
String1 = DateTime.Now.ToString();
array1.SetValue("another test", 0);
PropertyChanged(this, new PropertyChangedEventArgs("Array1"));
}
}
Dzięki. ObservableCollection implementuje te funkcje i działa doskonale. Doceniam twoją pomoc klm_. – Scifiballer24
Zastosowanie ObservableCollection zamiast:
private ObservableCollection<string> _myItems = new ObservableCollection<string>(new[] { "test1", "test2", "test3" });
public ObservableCollection<string> MyItems
{
get { return _myItems; }
set { _myItems = value; }
}
Xaml
<StackPanel Orientation="Vertical">
<TextBox Text="{Binding MyItems[0]}"/>
<TextBox Text="{Binding MyItems[2]}"/>
<TextBlock Text="{Binding MyItems[0]}"/>
<TextBlock Text="{Binding MyItems[1]}"/>
</StackPanel>
- 1. WPF: jak powiązać z właściwością zagnieżdżoną?
- 2. Jak powiązać ItemsControl.ItemsSource z właściwością w XAML?
- 3. Jak powiązać DataGridTemplateColumn.Visibility z właściwością poza DataGrid.ItemsSource?
- 4. WPF Datagrid RowDetailsWskazówkaTemplate związana z właściwością
- 5. WPF powiązanie właściwości usercontrol z rodzicielską właściwością
- 6. Jak powiązać pliki obiektów C++ z ld
- 7. Knockout.js Jak mogę powiązać z właściwością sub
- 8. C++ Sprawdź, czy element istnieje w tablicy
- 9. WPF DataGrid RowDetails Widoczność powiązania z właściwością (tylko z XAML)
- 10. Sprawdź, czy element znaleziony w tablicy C++
- 11. WPF - jak powiązać DataGridTemplateColumn
- 12. Jak powiązać tabelę w zestawie danych z datagridem WPF w C# i XAML
- 13. Jak usunąć element z tablicy w C#
- 14. WPF: Wiązanie etykiety z właściwością klasy
- 15. Pobierz tylko jeden element z tablicy obiektów w JSON
- 16. Czy można powiązać cały obiekt z CommandParameter w XAML?
- 17. Jak powiązać element DataFrid WPF ze zmienną liczbą kolumn?
- 18. WPF: Jak powiązać obiekt z ComboBox
- 19. WPF - powiązanie z właściwością niestandardowego obiektu znajdującego się wewnątrz innego obiektu
- 20. WinForm: Jak powiązać element Checkbox w CheckedListBox z databinding
- 21. XAML: Jak powiązać właściwość DependencyProperty z właściwością C# o tej samej nazwie na innym obiekcie?
- 22. Jak powiązać właściwość formantu z właściwością innej kontrolki?
- 23. Jak powiązać z właściwością zależności WPF, gdy datakekst strony jest używany do innych powiązań?
- 24. W jaki sposób powiązać BlackoutDates w formancie kalendarza WPF Toolkit?
- 25. ASP.NET MVC - Nie można powiązać tablicy z modelem widoku
- 26. Konfigurowanie powiązania z niestandardową właściwością DependencyProperty wewnątrz formantu użytkownika WPF
- 27. Inicjowanie obiektów i fabrykach obiektów w C++
- 28. Czy element enum może być wielkością tablicy w ANSI-C?
- 29. WPF - Style grupowe: Czy możemy powiązać tylko właściwość "Nazwa"?
- 30. WPF. Znajdź formant, który wiąże się z określoną właściwością.
Czy to znaczy w jaki sposób powiązać nazwy [2] do obiektu kontrolnego declaretively w XAML? –
Tak, to mam na myśli. Teraz jednak powiązanie działa, ale kontrola docelowa nie jest aktualizowana po zmianie zmiennej źródłowej. Jestem zakłopotany – Scifiballer24