WPF привязывает субконтроли к родительскому элементу управления - PullRequest
0 голосов
/ 06 июня 2011

Я пытаюсь выполнить привязку данных, учитывая следующий случай:

У меня есть класс с именем "Node", который имеет два свойства: "speed" и "pauseTime".Затем у меня есть массив узлов.

В моем XAML есть числовой элемент управления (помеченный узлом), который позволяет пользователю переключаться между узлами.Есть также два субконтроля, которые я хочу, чтобы показывать скорость и pauseTime для выбранного узла.

Мой вопрос, например, как мне установить привязку данных для скорости, например, чтобы она показывала скорость для выбранного узлав массиве узлов, основанном на значении в числовом элементе управления Node?

Я попытался найти это в Google, но не уверен, какие условия поиска использовать.

1 Ответ

0 голосов
/ 06 июня 2011

Я не уверен, что вы подразумеваете под числовым управлением, но я привел пример сценария управления основными данными.

В XAML у вас есть Grid с ListView (мастер) и TextBlock (детали):

 <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <ListView ItemsSource="{Binding}" x:Name="masterListView">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}" />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
        <TextBlock Grid.Row="1" Text="{Binding  ElementName=masterListView, Path=SelectedItem.Speed}" />
    </Grid>

Код выглядит следующим образом:

  public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            DataContext = new Node[] 
            {
                new Node() { Speed = 1, PauseTime = "1 Min", Name = "Item 1" },
                new Node() { Speed = 2, PauseTime = "2 Mins" , Name = "Item 2" }
            };
        }
    }

    public class Node
    {
        public int Speed { get; set; }

        public string PauseTime { get; set; }

        public string Name { get; set; }
    }

Дочерний TextBlock привязывается к свойству Speed ​​выбранного узла. Если вы добавите IsSynchronizedWithCurrentItem = "True" в ListView, первый элемент будет автоматически выбран при загрузке окна. Если вы Google master details / WPF и IsSynchronizedWithCurrentItem = "True", вы найдете более подробную информацию.

Вероятно, для Google было бы также полезно сделать это с помощью MVVM - разумный подход упоминается в этом ответе Stackoverflow .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...