我有下一个XAML
<ComboBox Margin="5" Width="150" Name="languageComboBox">
<ComboBoxItem Content="Russian" Tag ="1" IsSelected="True"/>
<ComboBoxItem Content="English" Tag="2"/>
</ComboBox>
<DataGrid Name="VulnersDatagrid" ItemsSource="{Binding ...}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Заголовок" Width="*" CanUserSort="True" SortMemberPath="Vulner.DefaultDescription.Title">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Name="testTextBox" Margin="5,0" Text="My example Text" VerticalAlignment="Center"/>
</DataTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
如何使用触发器当我更改languageComboBox中的选定项目时,我可以将每行中testTextBox中的文本更改为languageComboBox中的文本?
UPDATE:ATTANTION! ComboBox和TextBlock在不同的DataTemplates中,因此像
这样的标准解决方案<TextBlock Text="{Binding ElementName=languageComboBox, Path=SelectedValue.Content}" Name="testTextBox" Margin="5,0" VerticalAlignment="Center"/>
Dosnot工作!
答案 0 :(得分:1)
你是对的,通过添加一个属性并绑定到祖先(在我的案例窗口中)来实现它。
viewmodel中的属性:
public object SelectedValue
{
get { return _selectedValue; }
set
{
_selectedValue = value;
OnPropertyChanged("SelectedValue");
}
}
private object _selectedValue;
结合:
<TextBlock Text="{Binding Path=SelectedValue.Content, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" />
答案 1 :(得分:0)
你可以绑定它:
<TextBlock Text="{Binding ElementName=languageComboBox, Path=SelectedValue.Content}" Name="testTextBox" Margin="5,0" VerticalAlignment="Center"/>