我想知道是否有办法将列表框中当前选定的单个项目绑定到WPF中的一组文本框和按钮。
说我有一个像这样的列表框
<ListBox Margin="5"
ItemsSource="{Binding Tags}"></ListBox>
像这样的视图模型
public sealed class HomeViewModel : DependencyObject
{
public ObservableCollection<ViewModels.TagViewModel> Tags { get; set; }
}
该可观察集合中的每个TagViewModel
看起来都是这样的
public class TagViewModel
{
public ICommand SaveNewTag { get; set; }
public ICommand DeleteCurrentTag { get; set; }
public int id { get; set; }
public string Name { get; set; }
}
我如何选择列表框中的项目仅绑定到该特定项目的Name属性,并将其命令绑定到我使用MVVM的两个按钮接近?
<TextBlock FontWeight="Bold"
HorizontalAlignment="Center"
Margin="0 0 0 40">Tags</TextBlock>
<Button Margin="0 0 0 10"
Command="{Binding SaveNewTag}">Add</Button>
<Button Margin="0 0 0 50"
Command="{Binding DeleteCurrentTag}">Delete</Button>
<TextBox MinWidth="200" ToolTip="Tag you want to add"
Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
答案 0 :(得分:0)
给出
<ListBox Margin="5" x:Name="tagsListBox" ItemsSource="{Binding Tags}"></ListBox>
我将包装此控件
<StackPanel DataContext="{Binding ElementName=tagsListBox,Path=SelectedItem.DataContext}">
<TextBlock FontWeight="Bold"
HorizontalAlignment="Center"
Margin="0 0 0 40">Tags</TextBlock>
<Button Margin="0 0 0 10"
Command="{Binding SaveNewTag}">Add</Button>
<Button Margin="0 0 0 50"
Command="{Binding DeleteCurrentTag}">Delete</Button>
<TextBox MinWidth="200" ToolTip="Tag you want to add"
Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>
基本上,您可以执行ElementName
绑定,根据Display View
更新您拥有的SelectedItem
。我只是将它包装在StackPanel
中,以便子项继承DataContext
值。如果要为每个子控件设置DataContext
,可以选择。