Я новичок в WPF и всей связи с данными.Я прочитал пару постов, и я совершенно не уверен, как связать свои данные с элементом пользовательского интерфейса.
Я видел пост, делающий это следующим образом:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="myWindow">
<Grid>
<TextBox Text="{Binding Path=Speed, ElementName=myWindow}" />
</Grid>
</Window>
Это предполагает Speed
- это свойство / элемент, определенный в файле code-behind.Несколько других людей назвали привязку, используя статический ресурс , и ссылаются на эту и другие, названные DataContext
, которые будут использоваться для привязки.Теперь, поскольку я новичок в связывании данных в WPF, я совершенно не уверен, существует ли какой-либо метод наилучшей практики для использования связывания данных.
По сути, мне было интересно, почему должно быть несколько свойств класса, определенных как своего рода соединитель с базовой моделью представления, хотя этот материал был более "динамическим".
Я стремлюсь иметь только файл XAML, без необходимости добавлять что-либо в файл кода * .xaml.cs.Например: у меня есть класс с именем MainWindowViewModel
(который будет представлять мою ViewModel), имеющий член типа ObservableCollection<string>
, и я хочу связать ListBox
(в моем представлении) с этой коллекцией.Пока я работал только так, используя первый случай, ElementName
, где я должен добавить свойство к классу представления как своего рода соединитель.Вот так:
MainWindow.xaml:
<Window x:Class="Sample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Name="MW" Title="MainWindow" Height="419" Width="463">
<Grid>
<ListBox ItemsSource="{Binding ElementName=MW, Path=ListerResultConnector}" />
</Grid>
</Window>
MainWindow.xaml.cs:
private ObservableCollection<string> mListerResultData = MainWindowViewModel.Instance.RetrievalStringResults;
public ObservableCollection<string> ListerResultConnector
{
get { return mListerResultData; }
}
Мой вопрос: существует ли более разумный способ привязкиданные для моего пользовательского интерфейса, использующие в качестве дополнительного свойства «соединитель» в файле с выделенным кодом.